這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
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