[golang] Glide 包管理工具,在windows10 64位系统上的bug修复方案

bug重现
[ERROR] Unable to export dependencies to vendor directory: Error moving files: exit status 1. output: Access is denied. 0 dir(s) moved

解决方案

第一步

//找到这个文件 github.com/Masterminds/glide/path/winbug.go


// CustomRename is similar to os.Rename but deals with the bug outlined
// at https://github.com/golang/go/issues/20841.
func CustomRename(o, n string) error {

	// Handking windows cases first
	if runtime.GOOS == "windows" {
		msg.Debug("Detected Windows. Moving files using windows command")
		cmd := exec.Command("cmd.exe", "/c", "move", o, n) //将这行代码修改为 cmd := exec.Command("cmd.exe", "/c", "xcopy /s/y", o, n+"\\")
		output, err := cmd.CombinedOutput()
		if err != nil {
			return fmt.Errorf("Error moving files: %s. output: %s", err, output)
		}

		return nil
	} else if detectWsl() {
		cmd := exec.Command("mv", o, n)
		output, err2 := cmd.CombinedOutput()
		msg.Debug("Detected Windows Subsystem for Linux. Removing files using subsystem command")
		if err2 != nil {
			return fmt.Errorf("Error moving files: %s. output: %s", err2, output)
		}

		return nil
	}

	return os.Rename(o, n)
}

第二步,重新编译glide.go文件

go build glide.go

第三步,将编译生成的可执行文件glide.exe,复制到gopath下的bin目录(这个目录是加了系统环境变量的,所以将其放入该目录)

第四步,更详细的讨论解决方案 https://github.com/Masterminds/glide/issues/873

posted @ 2017-12-31 10:53  Yxh_blogs  阅读(930)  评论(0编辑  收藏  举报