Glide--Golang包版本管理工具

原创
2017/06/27 10:45
阅读数 2.3K

Golang挺好用的,但是目前比较受到诟病的是其没有自带包管理工具(golang社区已经发起了一个dep的项目,不过要正式被golang接受还需要一段时间)。官方没有咋办,那就自己造轮子呗。所以 go的包管理工具就五花八门、层出不穷了。目前有Glide, gopm, godep,gpm,gom等等。。。

这里介绍一个工具,使用比较简单: glide

我已经将其文档翻译成了中文: glide 中文文档.

翻译的内容放在github上: https://github.com/javasgl/GlideDocs.

国内的访问github不顺畅的同学们,请看码云:http://git.oschina.net/javasgl/GlideDocs

不想看文章的可以直接去看中文文档,文档写的很清晰,文档中关于glide的用法和原理都有说明。

安装

安装就没啥可以说的了,去下载安装即可了(http://glidedocs.readthedocs.io/zh/latest/#glide)

初始化

在你已有的go项目的根目录下直接运行:glide init,就会生成一个glide.yaml配置文件,配置信息的详细说明见文档。 运行glide init之后,glide自动分析当前项目里已有的依赖包的关系并自动生成了glide.yaml文件来管理这些依赖关系。 这个过程需要一段时间来运行,因为它在扫描你的代码在推算依赖关系,请耐心等待。

~/codes/xxxxx/xxxx/: 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]	--> Found reference to github.com/stretchr/testify/assert
[INFO]	--> Found reference to gopkg.in/olivere/elastic.v3
....

运行完成之后,glide.yaml中的内容如下:

package: .
import:
- package: github.com/astaxie/beego
- package: github.com/stretchr/testify
  subpackages:
  - assert
- package: gopkg.in/olivere/elastic.v3

添加依赖

运行glide get,类似于go get,不过不同的是,glide get会下载你指定包到vendor/目录中而不是之前的GOPATH之中。关于go的 vendor/目录请执行google,这是go 1.5版本之后的功能。 这个glide get下载包的同时,也会更新glide.yaml中的配置:

~/cods/xxxx/xxxx/:glide get https://github.com/garyburd/redigo
....

完成之后,glide.yaml也更新了:

package: .
import:
- package: github.com/astaxie/beego
- package: github.com/stretchr/testify
  subpackages:
  - assert
- package: gopkg.in/olivere/elastic.v3
- package: github.com/grayburd/redigo

更新依赖

运行glide up来更新glide.yaml中配置的依赖包。 首次运行的时候,会生成一个glide.lock文件,对php的composer熟悉的一样就知道这个锁文件是干嘛的了。这个锁文件是保证再次运行glide up的时候不会去远程获取更新,而是直接使用这个锁文件中定义的依赖包及其版本。在协作开发时,一般这个锁文件可以进行版本控制,这样其他人拿到这个锁文件之后,执行glide up则会获取锁文件中指定的包版本,起到多人协作开发时统一开发环境的问题。

~/cods/xxxx/xxxx/:glide up
[INFO]	Downloading dependencies. Please wait...
[INFO]	--> Fetching github.com/stretchr/testify.
[INFO]	--> Fetching gopkg.in/olivere/elastic.v3.
[INFO]	--> Fetching github.com/astaxie/beego.
....

其他命令

其他的一些命令主要是帮助管理这些依赖的。详细见 http://glidedocs.readthedocs.io/zh/latest/commands/

写在最后

欢迎大家 star ,提交 issue 或者 fork 提交 pull request 来帮助我改进翻译质量。翻译项目地址: https://github.com/javasgl/GlideDocs

展开阅读全文
打赏
2
15 收藏
分享
加载中
岁月无痕博主

引用来自“dingdayu”的评论

引用来自“岁月无痕”的评论

引用来自“dingdayu”的评论

go的包管理不应该是dep吗?
文章开头也说了,这个 dep 要正式成为 go的一部分还有很长一段时间,看了dep 计划,好像是准备在go2.0时候才会正式出来一个版本。

他们两个的用法很像啊。
嗯,这些工具都一样,都很像的。就是因为go当初一开始没考虑好包管理的问题,导致社区就自己贡献了很多大同小异的工具
2017/06/28 13:37
回复
举报

引用来自“岁月无痕”的评论

引用来自“dingdayu”的评论

go的包管理不应该是dep吗?
文章开头也说了,这个 dep 要正式成为 go的一部分还有很长一段时间,看了dep 计划,好像是准备在go2.0时候才会正式出来一个版本。

他们两个的用法很像啊。
2017/06/28 13:35
回复
举报
岁月无痕博主

引用来自“dingdayu”的评论

go的包管理不应该是dep吗?
详细的可以看它的timeline 的安排的计划:https://github.com/golang/dep/wiki/Roadmap
2017/06/28 11:27
回复
举报
岁月无痕博主

引用来自“dingdayu”的评论

go的包管理不应该是dep吗?
文章开头也说了,这个 dep 要正式成为 go的一部分还有很长一段时间,看了dep 计划,好像是准备在go2.0时候才会正式出来一个版本。
2017/06/28 11:25
回复
举报
go的包管理不应该是dep吗?
2017/06/28 10:27
回复
举报

引用来自“岁月无痕”的评论

引用来自“红薯”的评论

放到码云上把,我们推荐推荐:)
😄已经导入到了码云上了,http://git.oschina.net/javasgl/GlideDocs 👏

酷,待会推荐
2017/06/27 12:36
回复
举报
岁月无痕博主

引用来自“红薯”的评论

放到码云上把,我们推荐推荐:)
😄已经导入到了码云上了,http://git.oschina.net/javasgl/GlideDocs 👏
2017/06/27 12:00
回复
举报
岁月无痕博主

引用来自“红薯”的评论

放到码云上把,我们推荐推荐:)
哇,红薯大哥啊。。。。可以,我把它迁到 gitee.com上来。。。😄
2017/06/27 11:55
回复
举报
放到码云上把,我们推荐推荐:)
2017/06/27 11:50
回复
举报
更多评论
打赏
10 评论
15 收藏
2
分享
返回顶部
顶部