132014
 

在开发或者自己学习Go的过程中,可能会对比不同版本Go语言的特性、性能等,特别是可能想提前用上tip版本的一些特性,这个时候,系统中可能需要多个Go版本。那么该如何处理这个问题呢?

一般地,我觉得有两种处理方法。

1、目录改名法

比如 Go 版本(go1.3)安装在 /usr/local/go 目录中,并配置了 GOROOT(GOROOT=/usr/local/go)和 PATH (PATH=$PATH:$GOROOT/bin),这时,我们想安装一个Go1.2版本,比如放在了 /usr/local/go1.2 中。

通常,我们都在使用 Go1.3,但某个时候,我们想使用 Go1.2,这个时候,可以将 /usr/local/go 改名为 /usr/local/go1.3,同时将 /usr/local/go1.2 改名为 /usr/local/go,这样,Go版本就变成了 1.2 了。有其他版本时,一样处理。

2、不设置GOROOT的方法

最早时,Go需要设置不少环境变量,比如:GOARCH/GOOS/GOBIN/GOROOT 等,特别是GOBIN,网上有不少旧文章讲安装 Go 时,都提到设置这个环境变量,而实际上,如果你设置了GOBIN,使用 go install 时会出现可执行文件被安装到了 GOBIN 目录中,而不是 GOPATH/bin 目录中。

一般地,Go1.0 之后,只需要设置 GOROOT 和 GOPATH 就可以了,我们通过 go env 命令能够看到Go相关的环境变量:

GOARCH=”amd64″
GOBIN=”"
GOCHAR=”6″
GOEXE=”"
GOHOSTARCH=”amd64″
GOHOSTOS=”linux”
GOOS=”linux”
GOPATH=”/root/golang/myproject/”
GORACE=”"
GOROOT=”/usr/local/go”
GOTOOLDIR=”/usr/local/go/pkg/tool/linux_amd64″
CC=”gcc”
GOGCCFLAGS=”-fPIC -m64 -pthread -fmessage-length=0″
CXX=”g++”
CGO_ENABLED=”1″

也就是说,虽然,我们只设置了GOROOT和GOPATH,但实际上,很多其他环境变量也是有值的。实际上,在 《分析源码安装Go的过程》 一文中提到,make.bash 脚本会 export GOROOT,也就是说在安装时,并不需要自己设置 GOROOT,那么安装完成之后呢?可以试试在安装完成之后,不设置GOROOT,看看 go env 的输出,你会发现,GOROOT已经正确设置了。

可见,即使没有主动设置GOROOT,实际上 Go 也能知道 GOROOT 指向哪里,也就是说,主动设置 GOROOT 会覆盖默认的 GOROOT 设置。既然不设置 GOROOT,Go也能正确的找到 Go 安装目录,那么我们为啥还要设置呢?(可能设置的另一个理由是,设置 PATH 时,可以通过 $GOROOT 这种方式引入,改变 GOROOT 就可以起到改变 PATH 的目的)

这样一来,我们安装多个版本的Go,各个版本的GOROOT总是能够指向自己的目录,基于这一点,我们可以做到同时使用多版本。

当多版本时,我们可以将主版本的 bin 目录加入 PATH,以方便直接使用 go 命令。对于其他版本,我们可以通过建立软连接的方式来使用,比如:ln -s /usr/local/go1.2/bin/go /usr/bin/go1.2 (windows 下可以考虑直接改名)(注:Go1.4 将支持 Windows 下创建符号链接,这样可以用 Go 实现在Windows下建立符号链接,而不是改名,详见:《【Go1.4】主要改动》

综上,选择哪种方式根据你的喜好。个人觉得方法2方便些。配置了一次后,直接就可以使用了,而方法1总是得修改目录。

3、我的多版本配置

命令行 go/go1.0/go1.1/go1.2/go1.3/go_tip 分别使用对应的Go版本。(其中,go 使用了 最新稳定版)

Linux下:
多版本
多版本

Windows下:
多版本
多版本

注:quick_tools 下的文件是 通过自己写的 Windows 下创建符号链接工具创建的。

4、参考文献

5、代码下载

Windows 下的 ln 源码下载

二进制程序下载

6、更新说明

1)2014-08-13 初始版本
2)2014-08-15 增加 我的多版本配置 部分

  4 条评论 到 “Go语言:安装多版本”

评论 (4)
  1. 你好,最近go的下载官网给挂掉了,总是打不开,能否帮忙提供下go最新的Windows安装包呢?e_yuan@foxmail.com

    • 打算下载下来发给你的,发现比较大,邮件比较费劲。

      你可以到这个地址下载:

      windows64位:http://golangtc.com/static/go/go1.3.1.windows-amd64.msi

      windows32位:http://golangtc.com/static/go/go1.3.1.windows-386.msi

  2. 弱弱的问,哪里可下载“tip版本”? https://golang.org/dl/ 这里没有

 评论

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>