[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/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

原文地址:https://www.cnblogs.com/yxhblogs/p/8157211.html

时间: 2024-11-13 09:45:10

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

[单选题]64位系统上,定义的变量int *a[2][3]占据的——字节

4 12 24 48 正确答案: 很遗憾,没答对,再接再厉! 答案解析 在64位系统上,一个指针占8个字节.在32位系统上,一个指针占4个字节.注意无论在32位还是在64位系统占,int均为4个字节.

32位程序在64位系统上获取系统安装时间(要使用KEY_WOW64_64KEY标记)

众所周知,取系统的安装时间可取注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion的子项InstallDate,此值是个DWORD类型的UnixStamp.  但是在64位系统上有所不同(仅测试了win7.win8),默认情况下32程序在64位机器上访问的是下面这个地址HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion

【转】将 Linux 应用程序移植到 64 位系统上

原文网址:http://www.ibm.com/developerworks/cn/linux/l-port64.html 随着 64 位体系结构的普及,针对 64 位系统准备好您的 Linux® 软件已经变得比以前更为重要.在本文中,您将学习如何在进行语句声明.赋值.位移.类型转换.字符串格式化以及更多操作时,防止出现可移植性缺陷. 0 评论: Harsha S. Adiga, 软件工程师, IBM 2006 年 5 月 18 日 内容 在 IBM Bluemix 云平台上开发并部署您的下一个

关于在64位系统上,使用APlayer,运行报错“找不到指定的模块”

使用APlayer开发了一个C#程序,原先开发电脑是32位的,安装电脑也是32位,只需要将相应的文件打包,然后在system32文件夹中放入atl71.dll和D3DX9_43.dll,项目运转正常.但后来因为系统升级,换了台win10 64位的系统,开发时只需将项目的平台换成x86,但是打包后安装却报错,且system32下的两个dll已存在.经过一天的摸索,因为64位系统有个SysWOW64  文件夹,将所需的两个dll放入此文件夹,问题得已解决. 网上查出两个文件夹的区别 \Windows

Win7 64位系统上配置使用32位的Eclipse(转)

Win7 64位系统上配置使用32位的Eclipse 博客分类: Eclipse eclipse 最近工作电脑换成了64位的win7系统,之前个人电脑上安装的jdk和Eclipse都是32位的.而新的工作电脑上安装的JDK是64位的,因 为原来的Eclipse自己安装了很多的插件和个性化配置,不想重新安装64位的Eclipse,所以想在64位的win7系统上继续使用原来的32位 Eclipse. 32位的Eclipse无法和64位的jdk搭配使用,但是我又不想仅仅为了适配Eclipse而只安装3

32位程序访问64位系统上的Windows注册表

今天在工作的过程中遇到个奇怪的为问题,就是通过c#获取注册表键值的问题,一般都比较简单: string SQLPath = string.Empty; RegistryKey hkml = Registry.LocalMachine; RegistryKey MSSQLServerKey = hkml.OpenSubKey(@"SOFTWARE\MICROSOFT\MSSQLServer"); if (MSSQLServerKey != null) { string[] keys =

在64位系统上不能安装Matlab notebook的解决方案

在64位系统上不能安装Matlab notebook的解决方案 过程分解 第一步:安装好matlab(附:Matalab R2015a界面) 第二步:在matlab中执行命令 >>notebook -setup  ,完成安装notebook 第三步: 输入命令>>notebook ,启动notebook,弹出如下问题界面(64bit系统安装时) 解决方法:替换下面红色方框内的这段内容 解决方案(拷贝覆盖即可): 添加PtrSafe属性,将: Private Declare  Fun

【OpenCV基础】Win7 64位系统上OpenCV的安装与在VS2013上的配置

OpenCV(Open Source Computer Vision Library)是一个开源的跨平台开源计算机视觉库,能在Windows.Linux.Mac等平台上运行,使用C语言与C++编写而成,轻量且高效. 下面介绍一下怎么在Win7 64位系统上安装OpenCV以及如何利用VS2013进行基于OpenCV的程序开发.OpenCV的函数库封装在了lib和dll里,并且有两种版本,一种是x86(32位),一种是x64(64位),我在64位系统上使用32位的库没有成功,所以这个教程只适用于W

Golang学习--包管理工具glide

上一篇文章中我们已经成功的运行了go的代码,这是我们迈出的最基础的一步. 一个项目通常会依赖很多外部的库,当依赖的库比较多的时候,手工管理就会比较麻烦,这个时候就需要包管理工具出场了,帮你管理好所有依赖的库. php项目中使用composer,javascript项目中使用npm,那么在go项目中,我们需要使用什么? 包依赖工具的选择 当前go的包管理工具有glide.godep.govendor和gvt等,相关对比的文章可以查看<go依赖包管理工具对比>. 功能对比可以参考如下内容(虽然跟上