13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

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

一直以来,我都习惯通过源码安装 Go。我是这么做的:

我们提供的服务有:网站建设、成都网站设计、微信公众号开发、网站优化、网站认证、文峰ssl等。为上千多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的文峰网站制作公司

1)Git clone Go 源码

 
 
 
  1. $ git clone https://github.com/golang/go 

2)需要安装什么版本就切换到对应的分支,比如安装 1.15.x

 
 
 
  1. $ git checkout -b release-branch.go1.15 origin/release-branch.go1.15 

如果本地之前已经存在该分支,直接 git checkout release-branch.go1.15 即可。

3)将 go 整个目录复制到 /usr/local/go1.15,编译安装

4)创建软链:

 
 
 
  1. ln -s go1.15 go 

之后加上环境变量等。

如果想要切换版本,只需要做类似上面的步骤,最后将 go 这个软链指向要切换的版本。

我这种方式存在两个问题:

之后看到 gvm[1] 这个工具,我试用了,可能是国内网络的原因,根本没法安装 Go,基本卡着不动。此外还有一些其他的解决方案,比如 goenv[2],这是仿照 pyenv 和 rbenv 实现的,安装配置感觉略微有点复杂,直接没尝试。

今天发现另外一个工具,和我手动管理多版本的思路类似,所以爱上了!

1、开发 goup 的初衷

发音:Go Up。作者介绍,他开发了这个工具的原因:

作者想要一个这样的工具:

2、安装 goup

因为 goup 本身是 Go 语言实现的,因此他通过一个脚本下载对应系统的预编译 goup 程序。当前最新版本 0.0.7 (这个工具是 9 月底开发的),当然你也可以自己手动下载这些编译好 goup 程序。(如果你本地安装了 Go 版本,直接 go get -u -v github.com/owenthereal/goup 安装也是可以的)

 

一行代码安装 goup(推荐的方式):

 
 
 
  1. $ curl -sSf https://raw.githubusercontent.com/owenthereal/goup/master/install.sh | sh 

3、使用介绍

看看 goup 的帮助文档:

 
 
 
  1. $ goup help 
  2. The Go installerUsage:  goup [command]Available Commands:  help        Help about any command 
  3.   init        Initialize the goup environment file.  install     Install Go by providing a version (e.g. "1.15.2", or "tip"). If empty, use the latest version. 
  4.   show        Show the current version of installed Go 
  5.   version     Show goup version 
  6. Flags:  -h, --help   help for goup 
  7. Use "goup [command] --help" for more information about a command. 

比如我想试试还不支持 Module 的版本:1.10.8

 
 
 
  1. $ goup install 1.10.8 
  2. Downloaded   0.0% (    3320 / 87999054 bytes) ... 
  3. Downloaded   3.7% ( 3260416 / 87999054 bytes) ... 
  4. Downloaded  11.7% (10338304 / 87999054 bytes) ... 
  5. Downloaded  21.1% (18563072 / 87999054 bytes) ... 
  6. Downloaded  27.9% (24592384 / 87999054 bytes) ... 
  7. Downloaded  34.8% (30588928 / 87999054 bytes) ... 
  8. Downloaded  41.6% (36618240 / 87999054 bytes) ... 
  9. Downloaded  48.4% (42549248 / 87999054 bytes) ... 
  10. Downloaded  55.2% (48611328 / 87999054 bytes) ... 
  11. Downloaded  62.1% (54640640 / 87999054 bytes) ... 
  12. Downloaded  68.9% (60669952 / 87999054 bytes) ... 
  13. Downloaded  75.8% (66666496 / 87999054 bytes) ... 
  14. Downloaded  82.6% (72695808 / 87999054 bytes) ... 
  15. Downloaded  88.8% (78135296 / 87999054 bytes) ... 
  16. Downloaded  93.3% (82100224 / 87999054 bytes) ... 
  17. Downloaded  94.4% (83083264 / 87999054 bytes) ... 
  18. Downloaded  98.7% (86851584 / 87999054 bytes) ... 
  19. Downloaded 100.0% (87999054 / 87999054 bytes) 
  20. INFO[0016] Unpacking /Users/xuxinhua/.go/go1.10.8/go1.10.8.darwin-amd64.tar.gz ... 
  21. INFO[0020] Success: go1.10.8 downloaded in /Users/xuxinhua/.go/go1.10.8 
  22. INFO[0020] Default Go is set to 'go1.10.8' 

你当前系统的 Go 版本就是 1.10.8 了。如果之前安装过,上面的下载过程就没有了:

 
 
 
  1. $ goup install 1.10.8 
  2. INFO[0000] go1.10.8: already downloaded in /Users/xuxinhua/.go/go1.10.8 
  3. INFO[0000] Default Go is set to 'go1.10.8' 
  4. $ goup showgo1.10.8 

尽情地享受吧!

4、工作原理

这个工具的灵感来自 Rust 的工具:rustup[3]。

它的工作原理很简单,在 $HOME/.go 目录下创建对应的版本目录,然后在这个目录创建一个软链 current 来控制当前使用哪个 Go 版本。这个思路和我一直源码安装的思路类似。唯一区别是,它是从 dl.google.com 上下载对应编译好的版本。但 tip 版本,则需要 clone Go 源码,进行编译安装,因此要求有 Go 环境。

我本地 $HOME/.go 下的文件信息:

 
 
 
  1. lrwxr-xr-x   1 xuxinhua  staff   28 10  9 17:16 current -> /Users/xuxinhua/.go/go1.10.8 
  2. -rw-r--r--   1 xuxinhua  staff   57 10  9 16:46 env 
  3. drwxr-xr-x  21 xuxinhua  staff  672 10  9 17:14 go1.10.8 
  4. drwxr-xr-x  22 xuxinhua  staff  704 10  9 10:03 go1.14.9 
  5. drwxr-xr-x  22 xuxinhua  staff  704 10  9 10:02 go1.15.2 
  6. drwxr-xr-x   2 xuxinhua  staff   64 10  9 17:10 gotip 

5、存在的一些问题

这个工具才出来十几天,试用下来,还存在一些问题:

我参照 gvm 提供的功能,给 goup 作者提了 issue,希望增加如下功能:

 

 
 
 
  1. goup list 和 goup listall  
  2. goup uninstall 

6、小结

整体上,目前 goup 的使用还是比较顺畅的。欢迎大家试用,可以顺便给个 star。对了,项目地址:https://github.com/owenthereal/goup。

对了,至于为什么会需要管理多版本,我想很多人还会有这样的需求吧?!你为什么需要呢?欢迎留言。


新闻标题:终于找到了一款我喜欢的安装和管理Go版本的工具
URL地址:http://cdbrznjsb.com/article/dhcospo.html

其他资讯

让你的专属顾问为你服务