[golang] Glide 包管理工具,在windows10 64位系統上的bug修復方案
阿新 • • 發佈:2017-12-31
環境 all 管理工具 oos for 討論 pos inb direct
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
[golang] Glide 包管理工具,在windows10 64位系統上的bug修復方案