MacOS 使用 Homebrew 管理多個 Golang 版本

陳劭愷
4 min readJan 30, 2021

--

本篇文章同步刊載在筆者的 Blog 上,想要更好的閱讀體驗可以到筆者的 Blog 上面閱讀。https://blog.justin0u0.com/MacOS-%E4%BD%BF%E7%94%A8-Homebrew-%E7%AE%A1%E7%90%86%E5%A4%9A%E5%80%8B-Golang-%E7%89%88%E6%9C%AC/。喜歡這篇文章的話可以按個 Claps,你的支持就是我寫作的動力~

在網路上很多文章使用 `brew switch` 來切換 Golang 的 version,但是在 brew v2.6.0 後 `brew switch` 指令已經被廢棄([https://brew.sh/2020/12/01/homebrew-2.6.0/](https://brew.sh/2020/12/01/homebrew-2.6.0/))。

首先,先確認我們的 golang 是由 homebrew 管理。

which go
/usr/local/bin/go
ls -l /usr/local/bin/go
lrwxr-xr-x 1 justin admin 28 Jan 30 16:37 /usr/local/bin/go -> ../Cellar/go/1.15.7_1/bin/go

如果 which go 看到的路徑是 /usr/local/go 的話,那麼當初的 golang 應該是透過下載安裝而不是由 Homebrew 管理的,可以直接 rm -rf /usr/local/go 刪除。

接著用 Homebrew 安裝最新版本的 golang。

brew install gobrew info go
go: stable 1.15.7 (bottled), HEAD

假設我們要安裝 v1.14 版本的 golang,則一樣用 Homebrew 來安裝,指令為 brew install go@v?

brew install go@v1.14ls /usr/local/Cellar | grep “go”
go
go@1.14

可以看到兩個版本的 go 已經安裝完成。

看下現在的 golang 版本:

go version
go version go1.15.7 darwin/amd64

顯示為 go1.15.7,若要切換成 v1.14 的版本,可以用以下指令:

brew link — force — overwrite go@1.14go version
go version go1.14.14 darwin/amd64
which go
/usr/local/bin/go
ls -l /usr/local/bin/go
lrwxr-xr-x 1 justin admin 32 Jan 30 16:51 /usr/local/bin/go -> ../Cellar/go@1.14/1.14.14/bin/go

可以看到 go 指令的 symbolic link 已經被切換成 go@1.14 的版本。

若要切換回最新版本,則使用以下指令:

brew unlink go && brew link gogo version
go version go1.15.7 darwin/amd64
ls -l /usr/local/bin/go
lrwxr-xr-x 1 justin admin 28 Jan 30 16:53 /usr/local/bin/go -> ../Cellar/go/1.15.7_1/bin/go

可以看到 go 指令的 symbolic link 已經被切換回最新版本。

--

--