[golang] Glide 承打点工具,在windows10 64位系统上的bug修复方案

时间:2021-10-26 06:58:53

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/blob/master/path/winbug.go // CustomRemoveAll is similar to os.RemoveAll but deals with the bug outlined // at https://github.com/golang/go/issues/20841. func CustomRemoveAll(p string) error { // Handle the windows case first if runtime.GOOS == "windows" { msg.Debug("Detected Windows. Removing files using windows command") cmd := exec.Command("cmd.exe", "/c", "rd", "/s", "/q", p) //主要改削这一行代码,将其替换为 cmd := exec.Command("cmd.exe", "/c", "xcopy /s/y", o, n+"\\") output, err := cmd.CombinedOutput() if err != nil { exitCode := getExitCode(err) if exitCode != winErrorFileNotFound && exitCode != winErrorPathNotFound { return fmt.Errorf("Error removing files: %s. output: %s", err, output) } } return nil } else if detectWsl() { cmd := exec.Command("rm", "-rf", p) output, err2 := cmd.CombinedOutput() msg.Debug("Detected Windows Subsystem for Linux. Removing files using subsystem command") if err2 != nil { return fmt.Errorf("Error removing files: %s. output: %s", err2, output) } return nil } return os.RemoveAll(p) }

第二步,从头编译glide.go文件

go build glide.go

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

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