Ubuntu 可以安装多个 Go 版本,并且可以通过不同的方法来管理这些版本。
常见的方法有:
1. 使用 update-alternatives
管理 Go 版本
Ubuntu 提供了一个叫做 update-alternatives
的工具,可以让你同时安装多个 Go 版本,并在它们之间切换。
步骤:
-
下载并安装 Go 的不同版本
你可以从 Go 官方网站 下载不同版本的 Go,或者使用apt
包管理器安装。假设你下载了两个版本的 Go,分别为:
/usr/local/go1.22
(Go 1.22)/usr/local/go1.23
(Go 1.23)
-
安装
update-alternatives
如果你的系统中没有安装update-alternatives
,可以通过以下命令安装:sudo apt install -y update-alternatives
-
设置 Go 的多个版本
使用update-alternatives
来为 Go 创建一个管理工具:sudo update-alternatives --install /usr/bin/go go /usr/local/go1.22/bin/go 1 sudo update-alternatives --install /usr/bin/go go /usr/local/go1.23/bin/go 2
-
切换 Go 版本
使用update-alternatives
切换当前使用的 Go 版本:sudo update-alternatives --config go
然后会显示一个选项列表,选择你想要使用的 Go 版本的编号。
-
验证版本
切换版本后,使用go version
命令验证当前的 Go 版本:go version
2. 使用 gvm
(Go Version Manager)
gvm
是一个非常流行的 Go 版本管理工具,允许你在系统中安装和管理多个 Go 版本。
安装步骤:
-
安装
gvm
首先,通过以下命令安装gvm
:sudo apt install -y curl git bash < <(curl -s -S -L https://github.com/moovweb/gvm/archive/master.tar.gz)
-
安装 Go 版本
使用gvm
安装不同版本的 Go,例如安装 Go 1.22 和 Go 1.23:gvm install go1.22 gvm install go1.23
-
设置默认 Go 版本
使用gvm
切换到某个版本并设置为默认版本:gvm use go1.22 --default
-
验证版本
使用go version
来确认当前版本:go version
3. 使用 asdf
管理 Go 版本
asdf
是一个通用的版本管理器,支持多种编程语言的版本管理,包括 Go。
安装步骤:
-
安装
asdf
首先安装asdf
:git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.8.1
-
安装 Go 插件
安装 Go 插件:asdf plugin-add golang https://github.com/asdf-community/asdf-golang.git
-
安装 Go 版本
使用asdf
安装不同版本的 Go:asdf install golang 1.22 asdf install golang 1.23
-
设置 Go 版本
使用asdf
切换到所需的 Go 版本:asdf global golang 1.23
-
验证版本
确认当前 Go 版本:go version
4. 手动安装 Go 不同版本
你还可以手动安装 Go 的不同版本,将不同版本解压到不同的目录下,然后手动设置环境变量(GOPATH
和 GOROOT
)来切换版本。
步骤:
-
下载并解压 Go 的不同版本到不同的目录,例如:
/usr/local/go1.22
/usr/local/go1.23
-
在
.bashrc
或.zshrc
文件中添加 Go 版本环境变量:export GOROOT=/usr/local/go1.23 export PATH=$GOROOT/bin:$PATH
-
每次切换版本时,修改
.bashrc
或.zshrc
中的GOROOT
路径,并执行source ~/.bashrc
或source ~/.zshrc
来应用更改。
总结
update-alternatives
:通过系统自带的工具管理多个 Go 版本。gvm
:使用 Go 版本管理工具来安装和切换 Go 版本,适合大多数开发者。asdf
:一个跨语言的版本管理器,可以用来管理 Go 及其他工具的版本。- 手动安装:通过手动解压不同版本到不同目录并修改环境变量来管理 Go 版本。