10/23 发表评论

Gvm 是 Go 语言多版本安装及管理的一个工具,类似于 Ruby 中的 RVM,Java 中的 Jenv(国产),Python 中的 virtualenv,Nodejs 中的 Nvm;可用于方便管理 Go 的版本,它有如下几个主要特性:

  1. 管理 Go 的多个版本,包括安装、卸载和指定使用 Go 的某个版本
  2. 查看官方所有可用的 Go 版本,同时可以查看本地已安装和默认使用的 Go 版本
  3. 管理多个 GOPATH,并可编辑 Go 的环境变量
  4. 可将当前目录关联到 GOPATH
  5. 可以查看 GOROOT 下的文件差异

尤其是前三个特性,非常实用,接下来就详细的介绍一下这款工具的安装和常用方式;

安装 GVM

bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)

注意:如果本地用的是 zsh,将 bash 替换 zsh 即可;

使用 GVM

命令行直接输入 gvm,查看使用帮助:

GVM 使用帮助

GVM 命令

gvm install [goversion] # 安装指定版本,e.g. gvm install go1.4
gvm use [goversion] [--default] # 指定当前使用的 Node.js 版本,e.g. gvm use v6.10.0--default 参数设置默认使用版本
gvm list # 查看本地安装好的 Go 版本,箭头表示默认使用的版本
gvm listall # 查看当前所有可以安装的 Go 版本
gvm pkgset # GVM 可以管理多个 GOPATH(Go package)
go env # 查看 go 环境变量
gvm uninstall [goversion] # 卸载指定版本,e.g. gvm uninstall go1.4
gvm implode # 完全卸载掉 GVM 和所有安装的 Go 版本

安装指定的 Go 版本

如果是 go1.5 以下的版本,直接安装:

gvm install go1.4

这条命名背后做的事情是先把源码下载下来,再用 C 做编译;

如果是 go1.5+ 的版本,需要 Go 实现自举(用 Go 编译 Go),就需要先安装 go1.4 版本然后再来做编译;

# -B 表示只安装二进制包
gvm install go1.4 -B
gvm use go1.4
gvm install go1.11.1

安装好之后,指定默认使用这个版本,加上 --default 即可,省去每次敲 gvm use

gvm use go1.11.1 --default

注意和不足

  • 在 Linux 下安装 GVM,需要安装相关依赖,详情见官网说明
  • GVM 官方显示没对 Windows 做支持,考虑到 Windows 不是程序员的标配吧(有同学回复用 git-windows 客户端,自带bash 功能,可以自行尝试安装下)。
  • GVM 安装新版本之后,Go 环境变量会重新设置,为了节约磁盘空间和时间,建议把之前版本的 GOPATH 内容移动到新版本对应的 GOPATH 目录下,相关路径可以通过 go env 获取
  • 在同一版本下,用 gvm pkgset 创建多个 GOPATH,可能会占用你比较大的磁盘空间
  • 使用 gvm implode 需谨慎
  • GVM 是用 shell 编写

发表评论

回到顶端