about 1 results (0.01 seconds)

Golang版本管理工具 - GVM

by LauCyun Dec 7,2017 10:43:16 68,136 views

Go的环境安装和配置并不复杂,首先推荐官网的安装教程,介绍的非常全面详细。如果英文不太好的童鞋,推荐看Go环境配置,讲解的非常全面直观。

如果你有Go多版本的需求(比如新老版本共存),如果你想更简化Go环境配置(省去GOPATHGOROOT等的配置),你还希望它支持跨平台(支持Mac和Linux,不支持Windows),那么我特别推荐这款Go第三方工具:gvm——Go语言多版本安装及管理利器。

gvm,类似于Python中的pyenv,可用于管理Go的版本,它有如下几个主要特性:

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

尤其是前三个特性,非常实用,接下来就详细的介绍一下gvm的安装和使用。

0x1 安装

1 安装依赖组件

首先,需要安装依赖组件:

  • macOS
    $ xcode-select --install
    $ brew update
    $ brew install mercurial
  • Debian/Ubuntu
    $ sudo apt-get install curl git mercurial make binutils bison gcc build-essential
    
  • Redhat/Centos
    $ sudo yum install -y curl git make bison gcc glibc-devel
    
  • FreeBSD Requirements
    $ sudo pkg_add -r bash git mercurial

2 安装gvm

依赖安装完成后,即可安装gvm,安装命令如下:

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

注意:如果本地用的是zsh,直接把bash替换zsh即可。


图1 安装gvm

如图1所示,即为安装成功!

0x2 使用

安装完成后,直接输入gvm help,查看使用帮助信息:


图2 gvm help

帮助简单易懂,这里介绍其中其中几个常用的命令。

1 安装go

如果碰到问题是国内无法访问gvm配置的源地址,报如下错误:

$ gvm install go1.8.3
Downloading Go source...
Installing go1.8.3...
 * Compiling...
ERROR: Couldn't download Go source. Check the logs /root/.gvm/logs/go-download.log
$ cat /root/.gvm/logs/go-download.log
Initialized empty Git repository in /root/.gvm/archive/go/.git/
error: Failed connect to go.googlesource.com:443; Operation now in progress while accessing https://go.googlesource.com/go/info/refs

fatal: HTTP request failed
Initialized empty Git repository in /root/.gvm/archive/go/.git/
Initialized empty Git repository in /root/.gvm/archive/go/.git/

国内访问不了https://go.googlesource.com/go可将GO_SOURCE_URL修改为github上的源码镜像。

修改方法:

$ vim ~/.gvm/scripts/install

修改内容为:

GO_SOURCE_URL=https://github.com/golang/go

如果你要安装的版本低于go 1.5的话,即可直接安装:

$ gvm install go1.4 -B
$ gvm use go1.4 --default

它背后做的事情是先把源码下载下来,再用c做编译。

所以如果是go 1.5+版本,其实它是用go来编译go1.5+,所以就需要用到go1.4来做编译。

# -B 表示只安装二进制包
$ gvm install go1.4 -B
$ gvm use go1.4
$ export GOROOT_BOOTSTRAP=$GOROOT
$ gvm install go1.11.6 -B

如果遇到下载二进制文件失败的话,可以先下载go1.4.*.tar.gz到本地,再拷贝到~/.gvm/archive/目录中,重新安装即可成功。

go1.4.*.tar.gz下载地址:

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

$ gvm use go1.11.6 --default

这个时候查看go环境变量:


图3 go环境变量

可以看到其中GOPATHGOROOT等环境已经设置好了,是不是非常的nice!

2 列出已安装版本

列出本地已安装go版本,箭头表示默认使用的版本,我这里是go1.10.3


图4 gvm list

0x3 GOPATH

gvm还一个很实用的功能,可以管理多个GOPATH(Go package),是通过gvm pkgset命令。


图5 gvm pkgset

上图已经介绍的很详细,使用方法和gvm也类似,就不赘述。

在同一版本下,用gvm pkgset创建多个GOPATH,可能会占用你比较大的磁盘空间。

0x4 卸载

如果只是想卸载某个安装好的Go版本:

$ gvm uninstall go1.11.6

如果你想完全卸载掉gvm和所有安装的Go版本(需谨慎):

gvm implode

0x5 参考

0x6 更新日志

  • Dec 07, 2017:撰写;
  • Jul 20, 2018:修改gvm install go1.4 -B失败的问题;
  • Aug 14, 2018:安装版本go1.10.3,并修改图片;
  • Apr 3, 2019:安装版本go1.11.6,并修改图片。

...

Tags Read More..