golang Glide 包管理工具

原创 2018年01月19日 16:17:24

Glide 介绍

glide是Go的包管理工具。支持语义化版本,支持Git、Svn等,支持Go工具链,支持vendor目录,支持从Godep、GB、GPM、Gom倒入,支持私有的Repos和Forks。

http://glidedocs.readthedocs.io/zh/latest/ 中文版

https://glide.sh/ 官网

Glide 安装

go get github.com/Masterminds/glide

这个安装会自动生成执行文件 glide,文件一般位于 go/bin/目录下,所以 你这个目录要有可写权限哦,当然你这个命令也必须支持,否则无法生成

我的 go 目录放在用户根目录下:
mac系统
/Users/fox/go/go go 语言目录

Glide 命令

glide create 初始化项目并创建glide.yaml文件.
glide init 初始化项目并创建glide.yaml文件.
glide update 更新解析下载包依赖
glide up 更新解析下载包依赖
glide install 安装包
glide get 获取单个包
  --all-dependencies 会下载所有关联的依赖包
  -s 删除所有版本控制,如.git
  -v 删除嵌套的vendor
glide name 查看依赖名称
glide list 查看依赖列表
glide help 帮助
glide --version查看版本

glide mirror set [original] [replacement] 替换包的镜像
glide mirror set [original] [replacement] --vcs [type] 替换包的镜像
glide mirror remove [original] 移除包的镜像
glide mirror list 获取包的镜像列表

Golang类库 下载

https://www.golangtc.com/download/package

方法一 解决go get golang.org/x/net 安装失败

使用过,还是会报错

glide mirror set https://golang.org/x/mobile https://github.com/golang/mobile --vcs git
glide mirror set https://golang.org/x/crypto https://github.com/golang/crypto --vcs git
glide mirror set https://golang.org/x/net https://github.com/golang/net --vcs git
glide mirror set https://golang.org/x/tools https://github.com/golang/tools --vcs git
glide mirror set https://golang.org/x/text https://github.com/golang/text --vcs git
glide mirror set https://golang.org/x/image https://github.com/golang/image --vcs git
glide mirror set https://golang.org/x/sys https://github.com/golang/sys --vcs git

然后在 你的项目中,修改glide.yaml文件.在import:下一级增加

- package: golang.org/x/net

注意:这些包,哪个包报错,增加报错的包,不要全部加入,只有使用到的包加入

例如

package: blog
import:
- package: golang.org/x/net
- package: golang.org/x/sys
- package: golang.org/x/mobile
- package: golang.org/x/crypto
- package: golang.org/x/text
- package: golang.org/x/crypto
- package: golang.org/x/tools
- package: golang.org/x/image
。。。。后面的不再复制了

方法二 下载包

mkdir -p $GOPATH/src/golang.org/x
cd $GOPATH/src/golang.org/x
git clone https://github.com/golang/net.git #这个就是net包
git clone https://github.com/golang/crypto.git #这个就是crypto包
... 等等 需要的包,请自行替换

方法三 通过代理

首先你要有一个代理,如果没有请请通过其他两个方法
在终端设置(这里设置,关闭终端就失效)

export http_proxy=http://127.0.1:9000
export https_proxy=$http_proxy
export ftp_proxy=$http_proxy
export rsync_proxy=$http_proxy
export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"

git 代理也要设置

git config --global http.proxy http://127.0.0.1:1080 
#git config --global https.proxy https://127.0.0.1:1080

不需要代理的时候,可以关闭它

GIT 设置代理为空
git config --global --unset http.proxy 
#git config --global --unset https.proxy

GIT 查看已经设置的值:

git config http.proxy

Glide 生成的 glide.yml 文件说明

请移步此链接查看
http://blog.csdn.net/chenqijing2/article/details/55050843

Glide 团队开发时

需要将 glide.yaml 和 glide.lock 进行版本控制

案例 没有使用Glide的项目

从零开始使用.
下载

wget https://github.com/foxiswho/blog-go/archive/master.zip

解压缩

unzip master.zip
解压缩后得到目录 blog-go-master

移动目录

mv blog-go-master ~/blog-go

添加环境变量把 这个目录加入GOPATH里面
找到你的 GOPATH 配置地方修改

export GOPATH=/Users/fox/go/gopath:/Users/fox/blog-go

进入目录

cd /Users/fox/blog-go/src/blog

Glide 初始化

执行

glide init

输出

[INFO]  Generating a YAML configuration file and guessing the dependencies
[INFO]  Attempting to import from other package managers (use --skip-import to skip)
[INFO]  Scanning code to look for dependencies
[INFO]  --> Found reference to github.com/astaxie/beego
[INFO]  --> Adding sub-package cache to github.com/astaxie/beego
[INFO]  --> Adding sub-package context to github.com/astaxie/beego
[INFO]  --> Adding sub-package httplib to github.com/astaxie/beego
[INFO]  --> Adding sub-package logs to github.com/astaxie/beego
[INFO]  --> Adding sub-package orm to github.com/astaxie/beego
[INFO]  --> Found reference to github.com/go-sql-driver/mysql
[INFO]  --> Found reference to github.com/qiniu/api.v7/auth/qbox
[INFO]  --> Adding sub-package storage to github.com/qiniu/api.v7
[INFO]  --> Found reference to github.com/russross/blackfriday
[INFO]  --> Found reference to github.com/xormplus/xorm
[INFO]  --> Found test reference to github.com/smartystreets/goconvey/convey
[INFO]  Writing configuration file (glide.yaml)
[INFO]  Would you like Glide to help you find ways to improve your glide.yaml configuration?
[INFO]  If you want to revisit this step you can use the config-wizard command at any time.
[INFO]  Yes (Y) or No (N)?
Y
[INFO]  Looking for dependencies to make suggestions on
[INFO]  --> Scanning for dependencies not using version ranges
[INFO]  --> Scanning for dependencies using commit ids
[INFO]  Gathering information on each dependency
[INFO]  --> This may take a moment. Especially on a codebase with many dependencies
[INFO]  --> Gathering release information for dependencies
[INFO]  --> Looking for dependency imports where versions are commit ids

[INFO]  Here are some suggestions...
[INFO]  The package github.com/astaxie/beego appears to have Semantic Version releases (http://semver.org). 
[INFO]  The latest release is v1.9.2. You are currently not using a release. Would you like
[INFO]  to use this release? Yes (Y) or No (N)
Y
[INFO]  Would you like to remember the previous decision and apply it to future
[INFO]  dependencies? Yes (Y) or No (N)
Y
[INFO]  Updating github.com/astaxie/beego to use the release v1.9.2 instead of no release
[INFO]  The package github.com/astaxie/beego appears to use semantic versions (http://semver.org).
[INFO]  Would you like to track the latest minor or patch releases (major.minor.patch)?
[INFO]  The choices are:
[INFO]   - Tracking minor version releases would use '>= 1.9.2, < 2.0.0' ('^1.9.2')
[INFO]   - Tracking patch version releases would use '>= 1.9.2, < 1.10.0' ('~1.9.2')
[INFO]   - Skip using ranges
[INFO]  For more information on Glide versions and ranges see https://glide.sh/docs/versions
[INFO]  Minor (M), Patch (P), or Skip Ranges (S)?
P
[INFO]  Would you like to remember the previous decision and apply it to future
[INFO]  dependencies? Yes (Y) or No (N)
Y
[INFO]  Updating github.com/astaxie/beego to use the range ~1.9.2 instead of commit id v1.9.2
[INFO]  Updating github.com/go-sql-driver/mysql to use the release v1.3 instead of no release
[INFO]  Updating github.com/go-sql-driver/mysql to use the range ~1.3.0 instead of commit id v1.3
[INFO]  Updating github.com/qiniu/api.v7 to use the release v7.2.3 instead of no release
[INFO]  Updating github.com/qiniu/api.v7 to use the range ~7.2.3 instead of commit id v7.2.3
[INFO]  Updating github.com/russross/blackfriday to use the release v2.0.0 instead of no release
[INFO]  Updating github.com/russross/blackfriday to use the range ~2.0.0 instead of commit id v2.0.0
[INFO]  Updating github.com/smartystreets/goconvey to use the release 1.6.3 instead of no release
[INFO]  Updating github.com/smartystreets/goconvey to use the range ~1.6.3 instead of commit id 1.6.3
[INFO]  Configuration changes have been made. Would you like to write these
[INFO]  changes to your configuration file? Yes (Y) or No (N)
Y
[INFO]  Writing updates to configuration file (glide.yaml)
[INFO]  You can now edit the glide.yaml file.:
[INFO]  --> For more information on versions and ranges see https://glide.sh/docs/versions/
[INFO]  --> For details on additional metadata see https://glide.sh/docs/glide.yaml/

第一次生成 glide.yaml 文件

golang 报错解决

glide mirror set https://golang.org/x/mobile https://github.com/golang/mobile --vcs git
glide mirror set https://golang.org/x/crypto https://github.com/golang/crypto --vcs git
glide mirror set https://golang.org/x/net https://github.com/golang/net --vcs git
glide mirror set https://golang.org/x/tools https://github.com/golang/tools --vcs git
glide mirror set https://golang.org/x/text https://github.com/golang/text --vcs git
glide mirror set https://golang.org/x/image https://github.com/golang/image --vcs git
glide mirror set https://golang.org/x/sys https://github.com/golang/sys --vcs git

在项目中,修改glide.yaml文件.在import:下一级增加

- package: golang.org/x/net
- package: golang.org/x/sys
- package: golang.org/x/mobile
- package: golang.org/x/crypto
- package: golang.org/x/text
- package: golang.org/x/crypto
- package: golang.org/x/tools
- package: golang.org/x/image

注意:这些包本项目都使用到,所有都加入

安装依赖

然后执行
glide install
会生成glide.lock文件,锁定安装包的版本

升级

这一步, 不是必须的,例如 你要升级某些包 可以执行

glide up

案例 已经使用Glide的项目

glide install

未完待续

版权声明:原创文章欢迎转载,不过要记得加出处哦

Golang包管理工具Glide,你值得拥有

“依赖地狱”是每个程序员在成长之路上都会面临的情况,首先我们通过语义化版本来控制软件的版本,然后在我们的项目里通过指定软件版本来达到控制依赖的目的。如:你的项目A依赖多个项目B1,B2,B3,而B1,...
  • chenqijing2
  • chenqijing2
  • 2017年02月13日 17:22
  • 3234

Golang项目管理实践一--Golang包管理特点以及Glide工具的使用

文章内容 Golang包管理的特点 Golang包管理的注意点 结合Glide工具进行包管理实践 总结 由于Golang特殊的包管理策略,同时,目前并没有成熟的包管理工具,因此需要我们在...
  • villare
  • villare
  • 2018年01月10日 18:35
  • 173

golang Glide 包管理windows下使用

安装安装这里就不相信的介绍了,我是参考了如下两篇文档 https://segmentfault.com/a/1190000005929355 http://studygolang.com/arti...
  • Paddy90
  • Paddy90
  • 2017年06月02日 11:26
  • 2377

go - 关于 vendor 和 包管理glide

关于 vendor: golang使用vendor目录来管理依赖包 理解Go 1.5 vendor关于 glide glide使用 Golang Vendor 包管理工具 glide 使用教程...
  • hotdust
  • hotdust
  • 2017年11月06日 19:28
  • 379

Golang学习之采用Glide进行包管理

概述  Golang的包管理工具有很多,本篇幅主要介绍Glide进行包管理。安装及命令介绍➜ tonny@tonny-pc ~ go get github.com/Masterminds/glide...
  • yxys01
  • yxys01
  • 2017年08月21日 17:23
  • 464

Golang的包管理、项目管理

Golang的包管理有两个特点,一个是去中心化,也就是说,不像Node.js有一个npm,包的仓库可以是任意的代码仓库。一个是代码仓库跟代码本身耦合在一起(比如导入一个包是 "github.com/l...
  • langresser
  • langresser
  • 2016年01月14日 10:24
  • 5203

Golang包管理工具之glide的使用

1. glide简介 glide是一个golang项目的包管理工具,非常方便快捷,一般只需要2-3个命令就可以将go依赖包自动下载并归档到vendor的目录中。glide官网参考:https://g...
  • huwh_
  • huwh_
  • 2018年01月14日 20:01
  • 217

Glide管理Golang项目

未使用Glide遇到的问题 如果你的项目A依赖多个项目B1,B2,B3,而B1,B2,B3又依赖着其它项目C1,C2…。一个项目依赖这多个项目,当项目C1修复BUG版本发生变化,如果A依旧使...
  • qq_33754458
  • qq_33754458
  • 2017年06月22日 15:53
  • 915

go依赖包管理工具对比

写的挺清楚的,备份一下  转载于:https://www.studygolang.com/articles/10523  vendor一下 当开始真正用go去做项目的时候,不可避免的就会遇到依赖...
  • ok875161027
  • ok875161027
  • 2017年09月26日 17:15
  • 541

go包管理工具-glide使用方法及踩坑记录

前言大学以来一直想做一个OJ,终于可以开始,而且是用新学的Go来写,心里还是挺兴奋的。 项目启动,要搭架子,第一件事,当然是选择一个包管理工具。Go的包管理还是挺混乱的,没有一个能像Java的Mav...
  • to_be_better
  • to_be_better
  • 2017年10月02日 05:23
  • 594
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:golang Glide 包管理工具
举报原因:
原因补充:

(最多只允许输入30个字)