如何在CentOS升级Golang版本
导读:在 CentOS 上升级 Golang 的可选方案 适合大多数用户的标准做法:下载官方压缩包,解压到**/usr/local**,并配置环境变量。 需要隔离或快速切换环境:使用Docker运行指定版本的 Go。 需要在同一台机器上维护多个...
在 CentOS 上升级 Golang 的可选方案
- 适合大多数用户的标准做法:下载官方压缩包,解压到**/usr/local**,并配置环境变量。
- 需要隔离或快速切换环境:使用Docker运行指定版本的 Go。
- 需要在同一台机器上维护多个 Go 版本:使用gvm或asdf进行版本管理。
- 若此前通过 yum 安装过旧版,建议先卸载,避免 PATH 与 GOROOT 冲突。
标准升级步骤 手动安装官方压缩包
-
卸载旧版(如曾用 yum 安装)
- 执行:
sudo yum remove -y golang
- 执行:
-
下载并解压新版本
- 访问官方下载页获取最新链接(示例为 go1.22.5.linux-amd64.tar.gz,请替换为最新稳定版):
wget https://golang.google.cn/dl/go1.22.5.linux-amd64.tar.gz sudo rm -rf /usr/local/go sudo tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz
- 访问官方下载页获取最新链接(示例为 go1.22.5.linux-amd64.tar.gz,请替换为最新稳定版):
-
配置环境变量
- 全局生效(所有用户):编辑 /etc/profile
echo 'export GOROOT=/usr/local/go' | sudo tee -a /etc/profile echo 'export GOPATH=$HOME/go' | sudo tee -a /etc/profile echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' | sudo tee -a /etc/profile source /etc/profile - 仅当前用户生效:编辑 ~/.bashrc 或 ~/.bash_profile,内容同上,然后
source ~/.bashrc
- 全局生效(所有用户):编辑 /etc/profile
-
验证
go version go env GOROOT GOPATH预期输出类似:
go version go1.22.5 linux/amd64。
多版本共存与切换
-
方案一 手动多目录 + GOROOT 切换
# 安装两个版本到不同目录 sudo tar -C /usr/local -xzf go1.21.13.linux-amd64.tar.gz sudo mv /usr/local/go /usr/local/go1.21.13 sudo tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz sudo mv /usr/local/go /usr/local/go1.22.5 # 在 ~/.bashrc 中配置 echo 'export GOROOT_1_21=/usr/local/go1.21.13' > > ~/.bashrc echo 'export GOROOT_1_22=/usr/local/go1.22.5' > > ~/.bashrc echo 'export PATH=$GOROOT_1_22/bin:$PATH' > > ~/.bashrc # 默认使用 1.22 source ~/.bashrc # 切换版本 # 使用 1.21 export GOROOT=$GOROOT_1_21 export PATH=$GOROOT/bin:$PATH # 使用 1.22 export GOROOT=$GOROOT_1_22 export PATH=$GOROOT/bin:$PATH -
方案二 使用 alternatives 统一管理 /usr/bin/go
sudo update-alternatives --install /usr/bin/go go /usr/local/go1.21.13/bin/go 10 sudo update-alternatives --install /usr/bin/go go /usr/local/go1.22.5/bin/go 20 sudo update-alternatives --config go # 交互选择默认版本 -
方案三 使用版本管理工具
- gvm
bash < < (curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer) source ~/.gvm/scripts/gvm gvm install go1.21.13 gvm install go1.22.5 gvm use go1.22.5 --default - asdf
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.0 echo '. $HOME/.asdf/asdf.sh' > > ~/.bashrc source ~/.bashrc asdf plugin-add go https://github.com/asdf-vm/asdf-go.git asdf install go 1.21.13 asdf install go 1.22.5 asdf global go 1.22.5
以上方式便于在不同项目间快速切换版本。
- gvm
使用 Docker 隔离环境
- 拉取并运行指定版本(示例为 golang:1.22)
适合 CI/CD 或避免污染宿主机环境。docker pull golang:1.22 docker run -it --rm -v "$PWD":/app -w /app golang:1.22 bash # 在容器内 go version go build -o myapp .
常见问题与建议
- 升级后
go version仍显示旧版本- 检查可执行文件优先级:
which -a go;若 /usr/local/go/bin 不在首位,调整 PATH,或改用 alternatives 设置默认 go。 - 确认 GOROOT 是否指向新目录:
go env GOROOT应为 /usr/local/go。
- 检查可执行文件优先级:
- 国内下载慢
- 使用国内镜像(示例为 golang.google.cn/dl),或设置模块代理:
go env -w GOPROXY=https://goproxy.cn,direct。
- 使用国内镜像(示例为 golang.google.cn/dl),或设置模块代理:
- 卸载旧版
- 若通过 yum 安装:
sudo yum remove -y golang - 若手动安装:删除 /usr/local/go 并清理你在 shell 配置中添加的 GOROOT/GOPATH/PATH 行。
- 若通过 yum 安装:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在CentOS升级Golang版本
本文地址: https://pptw.com/jishu/765267.html
