如何安裝 Go 及版本控制

前言

這篇文章會主要介紹如何利用三種方法來安裝 Go,以及如何利用 GVM 來進行 Go 的版本控制。

並且補充我在 Big Sur 遇到的 GVM 安裝 Go 的問題。

環境:macOS Big Sur 11.4

Terminal:Zsh

I. 官網下載

最簡單的方式沒有之一,直接從官網下載執行檔來安裝

https://golang.org/doc/install#install

II. Brew 安裝

推薦:如果是使用 macOS 且一個人獨自開發的話,就直接使用這個方法安裝即可。

如果有安裝 brew 的話,直接在 Terminal 輸入下面指令即可。

brew install go

並輸入 go version 來確認是否安裝成功。

如果之後使用這個方法要更新 Go 很簡單,輸入 brew update go 即可。

ps. 至於如何利用 brew 來進行 Go 的版本控制,這邊就不做討論。

主要因為目前 brew install 只能安裝最新版本的 Go,並無法安裝指定的版本。 進而導致也無需版本控制了XDDD。

III. 使用 GVM 安裝及做 Go 版本管理

GVM 全名是 Go Version Manager 是一個管理 Go version 的第三方工具。

(需注意目前 Big Sur 及以上高階 macOS 版本會遇到的問題解法在下方。)

0. 在安裝 GVM 之前,如果你是 macOS 的話需要先執行下方程式~

xcode-select --install
brew update
brew install mercurial

1. 安裝 GVM

如果使用 bash 請輸入下方指令於 Terminal。

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

如果使用 Zsh 則請選擇下方指令。

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

並且在最後一步輸入

source /Users/sparkhuang/.gvm/scripts/gvm

2. 使用 GVM 安裝 Go

由於 go1.5 之後都是使用 Go 語言來自己編譯自己的(移除了相關 C 語言的程式碼,皆使用 Go 原生程式碼重寫)。

也就是說無法直接利用 gvm install go1.5 ,因為並沒有安裝的 Go 語言來進行 compile。(雞生蛋,蛋生雞的問題)

所以一般網路方法都是建議先安裝 go1.4 再來安裝之後的版本。

gvm install go1.4 -B # -B 代表直接安裝 binary 版本
gvm use go1.4 --default
gvm install go1.5 
gvm install go1.1x.y ...

這樣就完成了 Go 的安裝!

3. GVM 指令介紹

gvm 的使用方法跟其他語言的管理工具( rvm,nvm,pyenv etc…)類似

gvm use go1.16.5 使用某版本的 Go,如果要切換版本就是使用這一個指令。

gvm use go1.16.5 --default 使用某版本作為預設

gvm list 列出 GVM 已經安裝的 Go 版本

gvm listall 列出 Go 可以安裝的所有版本

gvm install go1.x 安裝 Go 的指定版本

gvm uninstall go1.x 解除安裝 Go 的指定版本

以上為基本的使用方法。

這邊稍微講解一下如何解除安裝 GVM。

請輸入下方指令:

gvm implode

如果上面指令無法 work 的話,則請輸入下方指令

rm -rf ~/.gvm

如果有權限問題視情況加上 sudo 來處理。

直接刪除 home 底下 .gvm 的資料夾即可。

sudo rm -rf ~/.gvm

Big Sur 無法利用 GVM 進行第一次安裝 Go

我這邊很不幸地…在安裝完 GVM 後,接著進行安裝 gvm install go1.4 -B 時會出現下面訊息

➜  ~ gvm install go1.4
Installing go1.4...
 * Compiling...
/Users/xxx/.gvm/scripts/install: line 84: go: command not found
ERROR: Failed to compile. Check the logs at /Users/xxx/.gvm/logs/go-go1.4-compile.log
ERROR: Failed to use installed version
➜  ~ gvm install go1.4 -B
Installing go1.4 from binary source
ERROR: Binary Go unavailable for this platform

在網路上有查到有些人直接安裝某版本即可例如 go1.7.1 這邊我嘗試之也一樣如上。

後來到 Github 上面看看有沒有人也有遇到類似的問題,果真的有。

其原因主要為 macOS 更新上 Big Sur 後會有的問題。

而目前實際解套的具體作法分為 2 種 (我採用第二種)

1. 安裝官網的 Go 版本後,利用 GVM 安裝你想要的版本後,刪除原先安裝官網版本。

2. 使用 brew 安裝 Go 之後,一樣利用 GVM 安裝你想要的版本後,再用 brew uninstall go 來解除安裝。

brew install go
gvm install go1.16.5
brew uninstall go
gvm install go1.4 go1. ...etc

之後就可以使用 GVM 來進行 Go 的版本控制及安裝了。

Reference

GVM Github

Go

GitHub issue