如何將 golang 1.18 升版到 1.22 === ###### tags: `Golang` ###### tags: `Golang`, `struct` <br> [TOC] <br> ## 方法 ### 使用套件管理器 > 方法最簡單 - Ubuntu/Debian: ```bash sudo add-apt-repository ppa:longsleep/golang-backports sudo apt update sudo apt install golang-go # 直升到最新 ``` <br> ## 安裝後驗證: ```bash go version # 應顯示 go1.22 或更高版本 ``` <br> --- ## 討論 ### 如何從 1.18. 升版到 1.22 ? - ### ``` $ go version go version go1.18.1 linux/amd64 ``` 如何升版到 1.22 ? - ### gpt-5 (2025/11/13) 下面給你最穩、最不會踩雷的升級方式(Linux x86-64)。我用臺灣用語&精簡步驟寫,你照抄即可。 ### 方法 A:官方壓縮檔安裝(建議) > 適合任何發行版;不受套件庫版本限制 1. 檢查現況(看是否是 apt/snap 裝的) ```bash which go go env GOROOT dpkg -l | grep -E '^ii\s+golang|^ii\s+golang-go' || true snap list | grep '^go\s' || true ``` 2. 若是用 apt/snap 安裝過,先移除以避免衝突(可選,但建議做) ```bash # 若有列出 golang-go 或 golang-1.xx sudo apt purge -y golang-go golang-1.* || true # 若有 snap 的 go sudo snap remove go || true ``` 3. 下載 Go 1.22 的最新修補版(將 x 换成最新小版號) ```bash cd /tmp curl -LO https://go.dev/dl/go1.22.x.linux-amd64.tar.gz curl -LO https://go.dev/dl/go1.22.x.linux-amd64.tar.gz.sha256 sha256sum -c go1.22.x.linux-amd64.tar.gz.sha256 # 顯示 OK 才往下 ``` 4. 移除舊版並安裝到 /usr/local ```bash sudo rm -rf /usr/local/go sudo tar -C /usr/local -xzf go1.22.x.linux-amd64.tar.gz ``` 5. 加入 PATH(若之前沒加) ```bash echo 'export PATH=/usr/local/go/bin:$PATH' >> ~/.bashrc # 若你常用 zsh: echo 'export PATH=/usr/local/go/bin:$PATH' >> ~/.zshrc exec $SHELL -l ``` 6. 驗證版本 ```bash go version # 期望輸出:go version go1.22.x linux/amd64 ``` ### 方法 B:僅安裝在家目錄(無 sudo 權限時) ```bash cd ~ rm -rf ~/go-1.22 2>/dev/null mkdir -p ~/go-1.22 tar -C ~/go-1.22 -xzf /tmp/go1.22.x.linux-amd64.tar.gz echo 'export GOROOT=$HOME/go-1.22/go' >> ~/.bashrc echo 'export PATH=$GOROOT/bin:$PATH' >> ~/.bashrc exec $SHELL -l go version ``` ### 升級後注意事項 * 專案的 `go.mod` 建議把 `go 1.xx` 改成: ```text go 1.22 ``` 然後在專案目錄執行: ```bash go mod tidy ``` * 如果你需要共存多版本,考慮用版本管理器(例如 `asdf`),或用不同的 `GOROOT`/`PATH` 隔離。 * 若你的環境以前手動設定過 `GOROOT` 指向舊路徑,記得更新或移除,避免混用。 需要我幫你把 `x` 查成目前最新的小版號,或幫你寫一個一鍵升級腳本嗎? <br> {%hackmd vaaMgNRPS4KGJDSFG0ZE0w %}
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up