glide是golang的一款包管理工具,就像Java下的Maven(当然Maven的定位不只是包管理工具)。今天试用了一下,记录一下使用过程和遇到的一些坑。

环境

Windows 7,Goland,Go 1.8.4

安装

go get -u github.com/Masterminds/glide

在Goland中打开File——Settings——Tools——External Tools,根据自己的gopath添加gopath\bin\glide.exe,如图

在Goland中输入命令:

glide

如果出现提示就证明安装成功了。

使用

不多说,直接上命令:

glide init

然后就会生成对应的glide.yaml,生成过程中根据自己需要选择合适的配置就行。

我的glide.yaml如下:

package: github.com/AceDarkkinght/GoProxyCollector
import:
- package: github.com/PuerkitoBio/goquery
version: ~1.3.0
- package: github.com/boltdb/bolt
version: ~1.3.1
- package: github.com/cihub/seelog
version: ~2.6.0
- package: github.com/parnurzeal/gorequest
version: ~0.2.15

现在就可以通过命令下载对应的dependencies了

glide install

然后就毫无意外的出错了。。。。

[WARN]  Unable to set version on golang.org/x/net/html to . Err: Cannot detect VCS
[ERROR] Error scanning golang.org\x\net\html: open C:\Users\yourUserName\.glide\cache\src\https-golang.org-x-net-html: The system cannot find the file specif
ied.
[ERROR] Failed to retrieve a list of dependencies: Error resolving imports

这是由于墙的原因导致有些google的包下不下来,我们可以使用mirror命令指定镜像,从镜像地址下载。命令如下:

glide mirror set https://golang.org/x/net/html https://github.com/golang/net --vcs git
glide mirror set https://golang.org/x/net/publicsuffix https://github.com/golang/net --vcs git
glide mirror set https://golang.org/x/sys/unix https://github.com/golang/sys --vcs git

再次运行:

glide install

再出错:

[ERROR] Unable to export dependencies to vendor directory: Error moving files: exit status 1. output: Access is denied.
0 dir(s) moved.

查了资料发现这是Windows下和文件权限有关的一个bug,github上面有相关讨论:

https://github.com/Masterminds/glide/issues/873

网友给出了两个解决方案:

  1. 修改glide源代码。
  2. 修改系统UAC。

这里采用第一种方法:

// 找到github.com/Masterminds/glide/path/winbug.go
// 修改 func CustomRename(o, n string) error
// 把 cmd := exec.Command("cmd.exe", "/c", "move", o, n) 改为
cmd := exec.Command("robocopy.exe", o, n, "/e")

保存修改,重新编译。

go get -u github.com/Masterminds/glide

然后运行:

glide install

如无意外的话你就可以在项目路径看到vendor文件夹了。

如果你有更好的办法或者遇到了别的问题也欢迎一起讨论。

Reference

https://studygolang.com/articles/7129

https://github.com/Masterminds/glide/issues/873

https://my.oschina.net/quicker/blog/831352?hmsr=studygolang.com&utm_medium=studygolang.com&utm_source=studygolang.com

使用glide进行包管理的更多相关文章

  1. 在go modules里使用go get进行包管理

    上一篇文章里我们介绍了go modules的初步使用,现在我们来更深入的了解一下如何使用go get在module中管理依赖. module下的包管理 首先我们介绍过go mod edit修改go.m ...

  2. Go语言使用Godep进行包管理

    一.为什么要包管理 默认Go的第三方包都是放在Gopath的src目录下,而且这些包都没有版本号的概念,这样的可能会出现一些问题. 举个例子:当A同事将开发完程序之后,此时可能引用了一个第三方的包,过 ...

  3. nodejs docker 开发最好选择yarn 进行包管理而不是npm

    npm 与yarn 的区别网上一大堆的文章,我们在构建docker 镜像是应该遵守的有些原则   基础镜像尽量小 对于构建进行缓存处理 构建的docker 的文件层数尽量少 能直接运行的,就别进行重复 ...

  4. Glide Golang包管理

    Golang的包管理乱得不行,各种工具横空出世,各显神通啊.用了几个下来,发现 Glide 是比较好用的,使用了 vender 来进行管理,多个开发环境的版本不冲突,功能强大,配置文件也足够简单. 初 ...

  5. 1.node 在node中 进行包与包之间函数的调用 module.exports

    本文参考学习了廖雪峰的大作 模块 但是廖的文章只模块只有一个函数,在此演示一个模块中有两个函数,在另外一个函数中是如何去调用的 //hello.js包中的内容'use strict'; var s=' ...

  6. [golang] Glide 包管理

    一.概述 golang的包管理工具有很多,本篇幅主要介绍glide进行包管理. 二.安装及命令介绍 go get github.com/Masterminds/glide glide create|i ...

  7. 插件~NuGet与packages管理项目的包包

    NuGet NuGet是一个工具,已经被集成到VS开发环境里,直接使用它可以快速安装第三方的包包,包包就是一组DLL和资源,开发者把它们打包一个包包,或者叫做package,而我们使用nuget可以将 ...

  8. linux下包管理命令yum与apt-get以及开发环境配置

    一般来说市面上常见的Linux系统分为两大类: RH类:Redhat.centOS和Fedora等 Debian类:ubuntu.Debian等. 上述两类系统对应的包管理工具命令分别是yum和apt ...

  9. npm 模块化管理

    我们要使用 npm 进行包管理,首先我们得安装 npm,怎么安装?其实只要你安装了 node,那便相当于安装了 npm: node下载地址:http://nodejs.cn/download/ 由于 ...

随机推荐

  1. MyISAM 和InnoDB 讲解

    1.InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定. 2.基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持. ...

  2. Java经典编程题50道之十六

    输出九九乘法表. public class Example16 {    public static void main(String[] args) {        table(9);    } ...

  3. tensorflow_mnist数据集一直加载错误的解决办法

    tensorflow数据集一直加载错误的解决办法: from tensorflow.examples.tutorials.mnist import input_data mnist = input_d ...

  4. CodeForces-740B Alyona and flowers

    题目要求选择一些花的集合,如果暴力去枚举每种选择方法明显是不行的.换种方式考虑:每一个集合都能为最后的答案做出要么正的.要么负的.要么0贡献,先把所有集合能做出的贡献预处理,然后从m个集合里面选择贡献 ...

  5. Redux:从action到saga

    前端应用消失的部分 一个现代的.使用了redux的前端应用架构可以这样描述: 一个存储了应用不可变状态(state)的store 状态(state)可以被绘制在组件里(html或者其他的东西).这个绘 ...

  6. java堆内存详解

    http://www.importnew.com/14630.htmljava堆的特点<深入理解java虚拟机>是什么描述java堆的 Java堆(Java Heap)是java虚拟机所管 ...

  7. C#中windows服务安装方法

    关于windows服务的编写方法,参考:http://www.cnblogs.com/sorex/archive/2012/05/16/2502001.html 我这里就补充一下安装方法. 1.首先打 ...

  8. ARM架构

    ARM架构(过去称作进阶精简指令集机器(Advanced RISC Machine),更早称作Acorn RISC Machine)是一个32位元精简指令集(RISC) 中央处理器(processor ...

  9. android自定义Notification通知栏实例

    项目有个需求,需要在发送Notification的时候动态给定url的图片.大概思路如下:自己定义一个Notification的布局文件,这样能够很方便设置View的属性. 首先加载网络图片,使用Bi ...

  10. 【linux】 LINUX FTP搭建

    1.安装ftp服务 yum install vsftpd 2.编辑配置文件 vsftpd的配置文件有三个,分别是:/etc/vsftpd/vsftpd.conf/etc/vsftpd/ftpusers ...