终于找到了一款我喜欢的安装和管理 Go 版本的工具( 二 )

比如我想试试还不支持 Module 的版本:1.10.8
$ goup install 1.10.8Downloaded0.0% (3320 / 87999054 bytes) ...Downloaded3.7% ( 3260416 / 87999054 bytes) ...Downloaded11.7% (10338304 / 87999054 bytes) ...Downloaded21.1% (18563072 / 87999054 bytes) ...Downloaded27.9% (24592384 / 87999054 bytes) ...Downloaded34.8% (30588928 / 87999054 bytes) ...Downloaded41.6% (36618240 / 87999054 bytes) ...Downloaded48.4% (42549248 / 87999054 bytes) ...Downloaded55.2% (48611328 / 87999054 bytes) ...Downloaded62.1% (54640640 / 87999054 bytes) ...Downloaded68.9% (60669952 / 87999054 bytes) ...Downloaded75.8% (66666496 / 87999054 bytes) ...Downloaded82.6% (72695808 / 87999054 bytes) ...Downloaded88.8% (78135296 / 87999054 bytes) ...Downloaded93.3% (82100224 / 87999054 bytes) ...Downloaded94.4% (83083264 / 87999054 bytes) ...Downloaded98.7% (86851584 / 87999054 bytes) ...Downloaded 100.0% (87999054 / 87999054 bytes)INFO[0016] Unpacking /Users/xuxinhua/.go/go1.10.8/go1.10.8.darwin-amd64.tar.gz ...INFO[0020] Success: go1.10.8 downloaded in /Users/xuxinhua/.go/go1.10.8INFO[0020] Default Go is set to 'go1.10.8'你当前系统的 Go 版本就是 1.10.8 了 。 如果之前安装过 , 上面的下载过程就没有了:
$ goup install 1.10.8INFO[0000] go1.10.8: already downloaded in /Users/xuxinhua/.go/go1.10.8INFO[0000] Default Go is set to 'go1.10.8'$ goup showgo1.10.8尽情地享受吧!
4、工作原理这个工具的灵感来自 Rust 的工具:rustup[3] 。
它的工作原理很简单 , 在 $HOME/.go 目录下创建对应的版本目录 , 然后在这个目录创建一个软链 current 来控制当前使用哪个 Go 版本 。 这个思路和我一直源码安装的思路类似 。 唯一区别是 , 它是从 dl.google.com 上下载对应编译好的版本 。 但 tip 版本 , 则需要 clone Go 源码 , 进行编译安装 , 因此要求有 Go 环境 。
我本地 $HOME/.go 下的文件信息:
lrwxr-xr-x1 xuxinhuastaff28 109 17:16 current -> /Users/xuxinhua/.go/go1.10.8-rw-r--r--1 xuxinhuastaff57 109 16:46 envdrwxr-xr-x21 xuxinhuastaff672 109 17:14 go1.10.8drwxr-xr-x22 xuxinhuastaff704 109 10:03 go1.14.9drwxr-xr-x22 xuxinhuastaff704 109 10:02 go1.15.2drwxr-xr-x2 xuxinhuastaff64 109 17:10 gotip5、存在的一些问题这个工具才出来十几天 , 试用下来 , 还存在一些问题:

  • 安装最新版本 , 需要知道当前最新版本是哪个?这是从获取的 , 但这个网址咱们无法访问;同样的道理 , 安装 tip 版本 , 源码是从获取的 。 因此目前大陆还无法使用;不过我已经给作者提了 issue , 应该很快就会支持;
  • 缺失一些功能 。 比如我想安装某个版本 , 比如 1.12.x , 但我希望安装的是 1.12 系列的最新版本 , 这时候你只能去找 1.12 的最新版本是哪个 。
  • 。。。
我参照 gvm 提供的功能 , 给 goup 作者提了 issue , 希望增加如下功能:
  • goup list 和 goup listall
  • goup uninstall
6、小结整体上 , 目前 goup 的使用还是比较顺畅的 。 欢迎大家试用 , 可以顺便给个 star 。 对了 , 项目地址: 。
对了 , 至于为什么会需要管理多版本 , 我想很多人还会有这样的需求吧?!你为什么需要呢?欢迎留言 。
参考资料[1]
gvm:
[2]
goenv:
[3]
rustup:
终于找到了一款我喜欢的安装和管理 Go 版本的工具文章插图


推荐阅读