[Go] 使用 gvm 安裝與管理不同的 Go 版本
之前使用 Go 都是自己安裝想要的版本,
不過都得自己去裝,漸漸的也覺得有些不方便…
查了一下,發現蠻多人是使用 gvm (Go Version Manager),
來管理不同版本的 Go,就來試試看吧~
在 Mac 上,Homebrew 找不到 gvm,
於是用 gvm 提供的 bash 指令安裝:
$ bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer) Cloning from https://github.com/moovweb/gvm.git to /Users/testuser/.gvm macOS detected. User shell is: /bin/bash Created profile for existing install of Go at "/usr/local/go" Installed GVM v1.0.22 Please restart your terminal session or to get started right away run `source /Users/testuser/.gvm/scripts/gvm`
裝好之後,在新的 terminal 裡面就可以執行 gvm 指令了:
$ gvm Usage: gvm [command] Description: GVM is the Go Version Manager Commands: version - print the gvm version number get - gets the latest code (for debugging) use - select a go version to use (--default to set permanently) diff - view changes to Go root help - display this usage text implode - completely remove gvm install - install go versions uninstall - uninstall go versions cross - install go cross compilers linkthis - link this directory into GOPATH list - list installed go versions listall - list available versions alias - manage go version aliases pkgset - manage go packages sets pkgenv - edit the environment for a package set applymod - apply the go version in go.mod
用 gvm list
列出目前有的 Go 版本…
不過它只列出了 system 這個系統的 (目前版本是 1.20),
我事實上自己還有裝了 go1.18,看起來它是不會列入管理的,
可能因為它不是用 gvm 裝的?
$ gvm list gvm gos (installed) system
執行 gvm listall
列出 gvm 目前支援的所有 Go 版本:
$ gvm listall gvm gos (available) go1 go1.0.1 ...... go1.18 go1.18beta1 go1.18beta2 go1.18rc1 go1.18.1 go1.18.2 go1.18.3 go1.18.4 go1.18.5 go1.18.6 go1.18.7 go1.18.8 go1.18.9 go1.18.10 go1.19 go1.19beta1 go1.19rc1 go1.19rc2 go1.19.1 go1.19.2 go1.19.3 go1.19.4 go1.19.5 go1.19.6 go1.19.7 go1.19.8 go1.19.9 go1.19.10 go1.19.11 go1.19.12 go1.20 go1.20rc1 go1.20rc2 go1.20rc3 go1.20.1 go1.20.2 go1.20.3 go1.20.4 go1.20.5 go1.20.6 go1.20.7 go1.21rc1 go1.21rc2 go1.21rc3 go1.21rc4 go1.21.0
像是我想安裝 go1.18.10,就用 gvm install
指令,
我另外加了 -B
參數,這樣就會直接使用 binary 安裝,
避免它去抓 Go 的原始碼從頭開始編譯,可能會很久:
gvm install go1.18.10 -B
裝好之後再來看一下,已經有在列表內了:
$ gvm list gvm gos (installed) go1.18.10 system
使用的方式,是執行 gvm use <version>
,
這只會切換當前終端機的 Go 版本:
$ gvm use go1.18.10 Now using version go1.18.10
看一下 Go 的版本和相關環境變數,確實是 1.18 的:
$ go version go version go1.18.10 darwin/amd64 $ export | egrep GO declare -x GOPATH="/Users/testuser/.gvm/pkgsets/go1.18.10/global" declare -x GOROOT="/Users/testuser/.gvm/gos/go1.18.10"
也可以切換回系統預設的 Go 版本:
$ gvm use system Now using version system $ go version go version go1.20.7 darwin/amd64 $ export | egrep GO declare -x GOPATH="/Users/testuser/.gvm/pkgsets/system/global" declare -x GOROOT="/usr/local/go"
這樣就可以隨時切換不同的 Go 版本囉~
(本頁面已被瀏覽過 265 次)