sujingjhong.com


Golang / GVM for Go

GVM for Go #

gvmgolang 語言的版本管理系統,類似 nodejsnvm,以及 rubyrvm等等。

對這軟體的功用就不再贅述了。

安裝 gvm #

gvm 是用 shell 語言寫成,基本上直接用 curl 就可以安裝了

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

如果是用 zsh 就將首字的 bash 改成 zsh 即可

安裝完成後在終端機輸入 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

安裝 go #

如果要安裝 <1.5 以降版本,例如 1.4 就直接安裝即可:

gvm install go1.4
gvm use go1.4 [--default]

但如果要安裝 >=1.5 以上版本,因為 1.5以上版本的 Golang 已經完成自舉,需要 go 1.4 進行編譯。

所以需要先安裝 1.4 版本後再行編譯。參照官方文件就是:

gvm install go1.4 -B
gvm use go1.4
export GOROOT_BOOTSTRAP=$GOROOT
gvm install go1.5

fatal error: MSpanList_Insert #

不過雖然官方說直接安裝 go1.4 即可,個人作業系統為 MacOS 10.13.6,在啟用 go 語言時,一直發生錯誤。

詳細錯誤內容我就不附錄了,網路上找了一堆方法都不行。一度想要直接用 brew 或者官方編譯好的 pkg 檔案安裝,放棄 gvm 管理 golang

後來個人是直接用 go1.10.3 進行 binary 安裝,就解決這問題了:

gvm install go1.10.3 -B

–defalut #

在這裡建議將某個 golang 版本設定為預設版本。

因為 gvm 會自動調整 GOPATH 以及 GOROOT 還有 PATH 位置,很方便。但如果沒有將某個版本設定為 default,在未經修改的設定上,GOPATH 還有 GOROOT可能會是空的,這時候就會採很多坑。

設定方法,就是在 use 指令的最後面加上 --default

gvm use go1.10.3 --default

例如設定為 go1.9.7 為預設版本:

gmv use go1.9.7 --default