使用 GVM 搭建可維護的 Golang 開發環境

2023-03-20 12:03:15

  當你想完成 Golang 開發環境的便捷安裝以及隨時更新和保障多個版本的 Golang 共存的時候,就需要使用到 Golang 的專門版本管理工具 ——gvm

  本篇隨筆記錄了在 Ubuntu 下安裝使用 gvm 的過程

 

Gvm 的下載

  我們可以使用國內映象下載包含安裝指令碼的倉庫程式碼,然後直接執行安裝指令碼,來完成安裝

  先使用 git clone 下載完整的軟體倉庫:

git clone https://gitcode.net/soulteary/gvm.git

  指定 SRC_REPO 引數為國內映象地址,然後執行安裝指令碼:

SRC_REPO=https://gitcode.net/soulteary/gvm.git bash gvm/binscripts/gvm-installer

  當指令碼執行完畢,我們將會看到上文中提到過的紀錄檔輸出,此刻 gvm 就安裝完畢啦。

  為了更方便的使用 gvm,我們還需要進行一些設定。

設定 gvm 加速 Golang 下載/切換

  gvm 支援使用兩種方式來下載 「Golang」,然而不論是「下載原始碼編譯安裝」,還是下載適合當前作業系統的「預編譯好的二進位制檔案」,我們都需要存取官方地址。

  為了避免下載過程中因為網路問題,出現下載慢,或者無法下載的情況,節約我們的時間,我們需要對 gvm 進行一些簡單的設定。

  我們可以在當前使用的 「SHELL」 的 「rc」 檔案中(比如.bashrc 或者 .zshrc),新增下面的內容,來在當前的環境中讓 gvm 命令生效,同時,讓我們能夠使用更快的下載源來下載我們所需要的 「Golang」:

export GO_BINARY_BASE_URL=https://golang.google.cn/dl/
[[ -s "$HOME/.gvm/scripts/gvm" ]] && source "$HOME/.gvm/scripts/gvm"
export GOROOT_BOOTSTRAP=$GOROOT

  在「rc」 檔案中新增了上述內容後,需要重啟終端

export GO_BINARY_BASE_URL=https://golang.google.cn/dl/

  命令中的 GO_BINARY_BASE_URL 變數,定義了我們將從何處下載 Golang 的二進位制檔案或原始碼壓縮包進行安裝。當然,你也可以將其替換為下面的任意一個。

# 官方地址
https://go.dev/dl/
# 官方國內映象地址
https://golang.google.cn/dl/
# 阿里雲映象
https://mirrors.aliyun.com/golang/
# 中科大映象
http://mirrors.ustc.edu.cn/golang/
[[ -s "$HOME/.gvm/scripts/gvm" ]] && source "$HOME/.gvm/scripts/gvm"

  這條命令,是根據軟體的實際安裝情況來選擇性載入 gvm。相比較前文中安裝完畢 gvm 紀錄檔輸出內容推薦我們直接使用 source 命令載入 gvm,這樣可以更安全的執行命令,當且僅當 ~/.gvm 存在的時候才會載入程式,將 gvm 註冊到你當前的 SHELL 環境中。

export GOROOT_BOOTSTRAP=$GOROOT

  最後一條命令,則是為了確保 Golang 使用原始碼編譯安裝時,不會出錯(golang 1.14後需要 )

 

使用 gvm

  gvm 是一個特別簡單的命令,我們日常使用中其實只需要記得兩個命令就好,第一個是 gvm install,第二個是 gvm use

  假設我們想安裝 Golang 最新版本 1.18.3,那麼只需要執行下面的命令:

gvm install go1.18.3 -B

  如果你沒有裝 CURL 的話還需要自行安裝

 

 

  在執行完畢命令之後,稍等片刻,當我們看到 Installing go1.18.3 from binary source 這條紀錄檔輸出結果後,就意味著 Golang 已經被下載完畢了。如果你希望使用編譯原始碼的方式安裝 Golang 的話,可以去掉上面命令中的-B 引數:

gvm install go1.18.3

  雖然我們已經完成了 Golang 1.18.3 的安裝,但是目前我們還不能直接使用它,需要再執行一條命令,將這個版本的 Golang 「啟用」:

gvm use go1.18.3 --default

  在執行完命令之後,我們能夠立刻看到類似 Now using version go1.18.3 的紀錄檔輸出結果,接下來我們就可以隨意的使用 go 這個命令了。

  我們可以使用 go version 來驗證剛剛下載的程式是否符合我們的訴求

 

 

 

安裝過程參考https://zhuanlan.zhihu.com/p/537292132

以上