Ubuntu下Golang版本管理的常见方法
update-alternatives管理update-alternatives是Ubuntu系统自带的软件版本管理工具,可用于管理多个Golang版本的切换。
go1.23.0.linux-amd64.tar.gz):wget https://golang.org/dl/go1.23.0.linux-amd64.tar.gz
b. 解压到/usr/local目录:sudo tar -C /usr/local -xzf go1.23.0.linux-amd64.tar.gz
c. 配置update-alternatives:为每个版本创建符号链接并设置优先级(数字越大优先级越高):sudo update-alternatives --install /usr/bin/go go /usr/local/go/bin/go 1
d. 切换版本:运行以下命令,通过编号选择所需版本:sudo update-alternatives --config go
e. 验证版本:go version
该方法适合需要简单切换少量版本的场景,无需额外安装工具。
gvm(Go Version Manager)管理gvm是专门为Golang设计的版本管理工具,支持多版本安装、切换、卸载等功能,功能强大且易用。
sudo apt update
sudo apt install -y curl git mercurial make binutils bison gcc build-essential
gvm:bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
source ~/.gvm/scripts/gvm
gvm listall
go1.25.0):gvm install go1.25.0 -B # -B表示二进制安装,加快速度
gvm use go1.25.0 # 临时切换
gvm use go1.25.0 --default # 设置为默认版本
gvm uninstall go1.24.2
gvm适合需要频繁切换版本或管理多个Golang版本的开发者,是Ubuntu下最推荐的版本管理工具之一。
asdf(通用版本管理器)管理asdf是一个支持多语言的通用版本管理工具,可通过插件管理Golang版本,适合需要统一管理多种语言环境的用户。
asdf:git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.8.1
echo '. "$HOME/.asdf/asdf.sh"' >> ~/.bashrc
source ~/.bashrc
asdf plugin-add golang https://github.com/asdf-community/asdf-golang.git
go1.24.3):asdf install golang 1.24.3
asdf global golang 1.24.3
.tool-versions文件,写入golang 1.24.3):asdf local golang 1.24.3
asdf的优势在于可以统一管理多种语言的版本,适合需要跨语言开发的场景。
手动下载官方二进制包并配置环境变量,适合追求稳定、可控性的生产环境或需要定制化安装的用户。
go1.22.4.linux-amd64.tar.gz):wget https://golang.org/dl/go1.22.4.linux-amd64.tar.gz
b. 解压到指定目录(如/usr/local/go1.22.4):sudo tar -C /usr/local -xzf go1.22.4.linux-amd64.tar.gz
c. 配置环境变量:在~/.bashrc或~/.zshrc中添加:export GOROOT=/usr/local/go1.22.4 # 指向当前Go安装目录
export PATH=$GOROOT/bin:$PATH # 将Go命令加入PATH
export GOPATH=$HOME/go # 设置工作空间(可选)
source ~/.bashrc
d. 切换版本:修改GOROOT路径(如改为/usr/local/go1.23.0),然后执行source ~/.bashrc生效。gvm或asdf等工具管理多版本,避免手动操作带来的环境变量混乱问题。gvm use --default或asdf global设置默认版本),确保项目稳定性。go version验证当前版本,确保切换成功。