Intro
Golang发展迅速,代码迭代非常快,想要调试和梳理项目进程就成了一件相对棘手的事情。偶然间发现了gvm - Go Version Manager,算是找到了调试切换版本的福音。
关于gvm
GVM,类似于ruby 中的RVM,java 中的jenv(国产),可用于方便管理 Go 的版本,它有如下几个主要特性:
-
管理 Go 的多个版本,包括安装、卸载和指定使用 Go 的某个版本
-
查看官方所有可用的 Go 版本,同时可以查看本地已安装和默认使用的 Go 版本
-
管理多个 GOPATH,并可编辑 Go 的环境变量
-
可将当前目录关联到 GOPATH
-
可以查看 GOROOT 下的文件差异
Go 版本切换
二进制文件的管理比较简单,通过链接使用不同版本的程序即可,实际上主要是一些环境变量和标准库的设置问题,环境变量主要是 GOPATH 以及 GOROOT,标准库的话需要在切换 go 版本时也能跟着切换。gvm 实际上就是帮助完成这些配置工作。
安装
按照官方文档操作即可
1 2 3 | bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer) # or zsh < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer) |
使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | $ 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 (--default to set permanently) diff - view changes to Go root help - display this usage text 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 |
Mac下需要这样一把(如果你的环境有问题的话)
1 2 3 | xcode-select --install brew update brew install mercurial |
一般常规的操作是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # 先列一下看支持哪些版本 gvm listall # 看下自己环境有哪些版本 gvm list # 安装需要的版本,比如go1.8.3,加--default代表每次再进terminal时默认使用这个版本 gvm install go1.8.3 [--default] # 然后看下是否成功 go version go env # 如果不需要gvm的环境变量,则需要到GVM_ROOT/environments下面去删除 # 注意是清空文件 > $GVM_ROOT/environments/go1.8.3 # 如果需要每次打开terminal都生效的话,以下命令加入到bashrc/zshrc,注意要加在GOPATH/GOROOT的setting之前(如果希望环境变量不被修改的话) source /Users/chentao/.gvm/scripts/gvm |
几点注意
- 在 Linux 下安装 GVM,需要安装相关依赖,详情见官网说明
- GVM 官方显示没对 Windows 做支持,考虑到 Windows 不是程序员的标配吧(有同学回复用 git-windows客户端,自带bash功能,可以自行尝试安装下)。
- GVM 安装新版本之后,Go 环境变量会重新设置,为了节约磁盘空间和时间,建议把之前版本的 GOPATH 内容移动到新版本对应的 GOPATH 目录下,相关路径可以通过 go env 获取
- 在同一版本下,用 gvm pkgset 创建多个 GOPATH,可能会占用你比较大的磁盘空间
- 使用 gvm implode 需谨慎
- GVM 是用 shell 编写
侵删