go sdk 多版本管理方案


不同的工程使用的 go sdk 是不一樣的,為了避免線上和開發機結果不一致,需要把開發機的 sdk 版本設置成和打包機一致。GoLand IDE 里面很好處理,只要下載 go sdk zip 或者 .tar.gz 壓縮包的版本,然后解壓,IDE 里面對於不同的工程選擇不同的 sdk 文件夾就好了。命令行需要用工具手動切換,會麻煩一些。

1 推薦的方案

如果你可以接受 全局切換 go sdk, 選擇方案1。如果你需要 不同 shell 進程使用不同的 go sdk,選擇方案2。

1.1 方案1:voidint / g

如果可以接受全局切換 go sdk,建議使用這個方案。
 
特性:
  • go 寫的
  • 支持 windows 系統,通過 NTFS Junction Points 實現 link,所以不會遇到權限問題。
  • 支持 arm64 mac
  • 支持設置 mirror,可以設置鏡像為 https://golang.google.cn/dl/ ,然后就可以在牆內流暢下載 go sdk 了。
  • 看了下代碼,下載完成之后,會檢查 checksum。
  • 是通過爬蟲直接檢索 golang 官網獲取版本信息的,所以不需要每次 go sdk 發布新版本,這個軟件也更新到新版本。
  • 因為是通過把符號鏈接直接改了,所以改完會對所有的 shell 進程生效。也就是說,這個修改是全局的。

1.2 方案2:自己下載官網上的 .tar.gz 或者 .zip 壓縮包,然后解壓處理

如果想要一個 shell 一個 go sdk 版本,可以使用這個方案。
 
優點:
  • 不同的 shell 進程可以使用不同的 go sdk 版本,無窮高的靈活度。windows 下面的 powershell 似乎也能一個 shell 進程設置一個環境變量。
  • 可以自行從 google cn 下載壓縮包,所以不會遇到各種連接問題。
  • 出新的版本,立刻就能從官網下載到。官網改版后,使用爬蟲抓取網頁獲取鏈接的那些工具會掛掉,但是自己下載沒問題。
  • 不需要安裝第三方工具。
缺點:
  • 操作起來實在是太麻煩了。
 
注意,不要下載 .msi, .pkg 這種安裝包,這種一台電腦只能安裝一個版本。應該使用 .zip, .tar.gz 壓縮包,自己解壓縮。
國內可以使用下面的地址下載,不會出現連不上的問題: https://golang.google.cn/dl/
 
macOS 系統可以按照下面的步驟操作:
1. 下載 .tar.gz
請從 google cn 下載壓縮包:   https://golang.google.cn/dl/
2. 校驗 sha256sum
openssl sha256 ${file}
3. 移除 com.apple.quarantine 來解決 GateKeeper 阻止應用運行的問題: 
xattr -rd com.apple.quarantine ${file_or_directory}
4. 解壓縮
5. 把解壓縮后的文件移動到 ~/sdk/ 目錄下面
6. 修改 shell 配置文件,加上手動切換 go sdk 的 function
PATH_BASE="$PATH"

function use_go_1_17_4 () {
    export GOROOT="${HOME}/sdk/go1.17.4"
    export PATH="$GOROOT/bin:${PATH_BASE}"
}

function use_go_1_14_1 () {
    export GOROOT="${HOME}/sdk/go1.14.1"
    export PATH="$GOROOT/bin:${PATH_BASE}"
}

# 設置為默認使用 go 1.14.1
use_go_1_14_1
在 shell 里面切換 go 版本。
# 終端執行這個命令,會把當前 shell 切換到 1.17.4
use_go_1_17_4

# 終端執行這個命令,會把當前 shell 切換到 1.14.1
use_go_1_14_1

2 不推薦的方案

下面的方案都需要連接 golang 的國外官網,所以,你懂的。
特性:
  • go 寫的
  • 不支持使用 https://golang.google.cn/dl/ 鏡像
  • 沒有說是否支持 windows。但是鑒於 windows 的 NTFS symbolic link 的權限限制,作者沒有做特殊處理的話,應該是不支持的
  • 不支持 arm64 mac
特性
  • shell 寫的
  • 不支持使用 https://golang.google.cn/dl/ 鏡像
  • 最初設計是用來管理 go path 項目的,而不是只管理 go sdk 的版本。所以功能過於復雜
  • 沒有說是否支持 windows。
  • mac 系統下安裝還需要 command line tools & mercurial,非常麻煩。
特性
特性

2.5 go 官方方案: Managing Go installations

特性
  • 需要先下載一個 go sdk,然后才能安裝其他版本,所以會遇到先有雞還是先有蛋的問題。
  • 不支持使用 https://golang.google.cn/dl/ 鏡像
  • go 命令會加上版本號后綴,這樣 shell script, Makefile 使用 go 的地方會遇到問題
  • 支持 windows 系統
  • 支持 arm64 mac
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM