在 Debian 系统中切换 Golang (Go) 版本,通常有以下几种常见且实用的方法。你可以根据自己的需求(是系统级管理还是个人开发环境)选择最合适的一种。
update-alternatives(推荐,无需第三方工具)这是 Debian/Ubuntu 系统自带的工具,可以非常优雅地在系统层级管理和切换多个版本的命令行程序(如 go 和 gofmt)。
1. 准备工作:卸载 apt 安装的旧版本(如果有)
为了避免冲突,建议先卸载通过 apt 安装的 Go:
sudo apt remove golang-go golang-any
2. 下载并解压不同版本的 Go 从 Go 官方下载页面 获取你需要的 Linux 版本(以 amd64 为例):
# 下载两个版本作为演示
wget https://go.dev/dl/go1.20.5.linux-amd64.tar.gz
wget https://go.dev/dl/go1.21.3.linux-amd64.tar.gz
# 分别解压到不同的目录(例如 /usr/local/go1.20.5 和 /usr/local/go1.21.3)
sudo tar -C /usr/local -xzf go1.20.5.linux-amd64.tar.gz
sudo mv /usr/local/go /usr/local/go1.20.5
sudo tar -C /usr/local -xzf go1.21.3.linux-amd64.tar.gz
sudo mv /usr/local/go /usr/local/go1.21.3
3. 将版本添加到 update-alternatives
# 注册 go 命令
sudo update-alternatives --install /usr/local/bin/go go /usr/local/go1.20.5/bin/go 100
sudo update-alternatives --install /usr/local/bin/go go /usr/local/go1.21.3/bin/go 200
# 注册 gofmt 命令(可选,但建议)
sudo update-alternatives --install /usr/local/bin/gofmt gofmt /usr/local/go1.20.5/bin/gofmt 100
sudo update-alternatives --install /usr/local/bin/gofmt gofmt /usr/local/go1.21.3/bin/gofmt 200
(注:最后的数字是优先级,数字越大默认优先级越高)
4. 切换版本 运行以下命令,根据提示输入对应的数字即可切换:
sudo update-alternatives --config go
sudo update-alternatives --config gofmt
5. 验证
go version
GVM 类似于 Node.js 的 nvm 或 Python 的 pyenv,可以在用户级别轻松安装、卸载和切换 Go 版本。
1. 安装 GVM
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
source ~/.gvm/scripts/gvm
(如果没安装 curl 或 git,请先执行 sudo apt install curl git)
2. 安装所需的 Go 版本
# 安装 Go 1.20 和 1.21(GVM 会自动处理依赖和源码编译/二进制下载)
gvm install go1.20.5
gvm install go1.21.3
3. 切换版本
# 临时使用某个版本
gvm use go1.21.3
# 设置默认版本(每次打开终端自动生效)
gvm use go1.21.3 --default
4. 查看已安装版本
gvm list
golang.org/dl 工具(适合临时测试)如果你只是偶尔需要运行特定的 Go 版本来测试代码,而不想改动系统环境,可以使用 Go 官方提供的版本下载器(要求你系统里已经有一个基础的 Go 环境)。
# 假设你已经有 go 命令,通过它安装其他版本
go install golang.org/dl/go1.21.0@latest
# 下载该版本的 SDK
go1.21.0 download
# 直接使用该版本运行命令(不需要切换系统 PATH)
go1.21.0 version
go1.21.0 run main.go
如果你不想用任何工具,可以直接把不同版本的 Go 解压到不同目录,然后修改 ~/.bashrc 或 ~/.zshrc 里的 PATH 变量。
# 在 ~/.bashrc 中指定你要用的版本路径
export GOROOT=/usr/local/go1.21.3
export PATH=$GOROOT/bin:$PATH
修改后执行 source ~/.bashrc 即可生效。
update-alternatives),稳定且不需要引入第三方脚本。go version 确认切换是否成功,并检查你的 GOPATH 和项目依赖是否需要重新整理。