分享
[golang] Glide 包管理工具,在windows10 64位系统上的bug修复方案
yxhblogs · · 3617 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
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
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信3617 次点击
下一篇:golang之切片
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
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