Golang-and-package-version-managment
2016-01-20 00:06
549 查看
参考文章
学习
安装完,验证一下是否安装成功
输出
常见的命令
而
而
通过
在项目的根目录下,执行两个命令,其中需要安装的包需要先使用
Godeps.json的文件格式如下
执行
然后会在项目下创建
对golang中包的管理机制大概讲这么多,有问题一起沟通。引用注明出处即可。
学习
Golang之后对golang中的版本管理,包管理等机制一直没有很好的琢磨,偶然想起还是觉得很有必要进行归纳,包管理使用起来简单,无非就是
install,
uninstall,
list等,但是在工程上包管理要是不当,却会造成很多不必要的麻烦。
gvm
gvm是golang的版本管理程序,为什么需要这么个版本管理,是因为golang还在高速发展中,发版频繁,升级迭代可能不完全兼容上一代,所以这种工具应运而生,像ruby有对应的rvm,node有对应的
nvm都是为了方便的进行不同版本的切换。
install
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
安装完,验证一下是否安装成功
gvm version
输出
Go Version Manager v1.0.22 installed at /Users/liujb/.gvm
支持的命令
% gvm Usage: gvm [command] Description: GVM is the Go Version Manager Commands: version - print the gvm version number get - gets the latest code (for debugging) use - select a go version to use diff - view changes to Go root implode - completely remove gvm install - install go versions uninstall - uninstall go versions cross - install go cross compilers linkthis - link this directory into GOPATH list - list installed go versions listall - list available versions alias - manage go version aliases pkgset - manage go packages sets pkgenv - edit the environment for a package set
常见的命令
gvm listall查看所有的golang版本
gvm install go1.4.2安装1.4.2版本
gvm use go1.4.2使用go1.4.2版本,使用后
GOPATH变成
/Users/liujb/.gvm/pkgsets/go1.4.2/global,这样就相当于每个版本的golang所使用的GOPATH都不一样,这样不同的golang包之间的版本兼容问题也可以得到解决。
gvp/gpm
install
brew install gvp brew install gpm
use
这两个包一般成对使用,其中gvp命令使用主要设置
GOPATH为当前目录,例如
source gvp echo $GOPATH # 输出/Users/liujb/.godeps:/Users/liujb
而
gpm主要是通过
install命令安装
Godeps文件内指定的包,最主要的两个命令
$ gpm get # Parses the Godeps file, gets dependencies and sets them # to the appropriate version but does not install them. $ gpm install # Parses the Godeps file, installs dependencies and sets
而
Godeps的文件类似
github.com/nu7hatch/gotrail v0.0.2 github.com/replicon/fast-archiver v1.02 launchpad.net/gocheck r2013.03.03 # Bazaar repositories are supported code.google.com/p/go.example/hello/... ae081cd1d6cc # And so are Mercurial ones
通过
gpm install时候会先解析
Godeps文件,然后安装文件内指定的包以及版本,同时安装到
.godeps目录下的
src/bin/pkg
godep
install
go get github.com/tools/godep 或者 brew install godep
使用
参考1 参考2在项目的根目录下,执行两个命令,其中需要安装的包需要先使用
go get下载到
$GOPATH下边,另外所在项目需要在版本管理
git,
hg之下。
godep save godep restore
Godeps.json的文件格式如下
{ "ImportPath": "github.com/kr/hk", "GoVersion": "go1.1.2", "Deps": [ { "ImportPath": "code.google.com/p/go-netrc/netrc", "Rev": "28676070ab99" }, { "ImportPath": "github.com/kr/binarydist", "Rev": "3380ade90f8b0dfa3e363fd7d7e941fa857d0d13" } ] }
gom
install
go get github.com/mattn/gom
use
创建Gomfilesgom 'github.com/mattn/go-runewidth', :tag => 'go1' gom 'github.com/mattn/go-scan', :commit => 'ecb144fb1f2848a24ebfdadf8e64380406d87206' gom 'github.com/daviddengcn/go-colortext' gom 'github.com/mattn/go-ole', :goos => 'windows' # Execute only in the "test" environment. group :test do gom 'github.com/mattn/go-sqlite3' end # Execute only for the "custom_group" group. group :custom_group do gom 'github.com/golang/lint/golint' end
执行
gom install
然后会在项目下创建
_vendor目录。
% tree -L 4 ├── Gomfile └── _vendor └── src └── github.com ├── daviddengcn └── mattn 5 directories, 1 file
个人小结
gvm说白了是
golang的版本管理,跟包管理没有半毛钱关系
gvp/gpm这一配套工具,可以设置当前目录为
GOPATH,同时根据
Godeps文件的描述,安装指定的包到gvp指定的路径。
godep说白了,就是将通过
go get安装的包,通过json文件
Godeps.json保存到项目下的
Godeps/_workspace目录下,然后编译的时候
export GOPATH='Project/Godeps/_workspace':$GOPATH即可。
gom跟
npm最接近,都只是需要一个包描述文件,然后安装到指定位置,其余什么都不用做了,当然别忘了指定
GOPATH
对golang中包的管理机制大概讲这么多,有问题一起沟通。引用注明出处即可。
相关文章推荐
- Golang开发中常见错误
- Golang-import-introduce
- mongoose 增删改查 基础篇
- 2015-2016 ACM ICPC Baltic Selection Contest E. Permutation Polygon
- radio和checkbox被选中的方法Google兼容性问题
- Codeforces Gym 100803D Space Golf 物理题
- Django静态文件配置
- CF 338 Hexagons
- 利用diango开发的博客系统
- UVA 11971 - Polygon 数学概率
- 2015年出现的十大流行Django库
- Django实践:个人博客系统(第八章 admin的配置)
- golang_protobuf环境搭建
- mongo查询某个字段是否存在,并删除记录里的这个字段
- django web开发指南 (参照)
- UVA11054 Wine trading in Gergovia
- UVA 11292_Dragon of Loowater
- Codeforces之Goodbye 2015
- MIT Introduction to Algorithms 学习笔记(十)
- 用 Webgoat 撬动地球,看安全测试的引路石!