版本管理
2024年9月29日大约 2 分钟
介绍
Go Version Manager(GVM)是一个用于管理 Go 语言版本的工具。它允许您同时在同一系统中安装多个 Go 版本,并通过简单的命令来切换使用不同版本的 Go。
安装
安装依赖
# Debian/Ubuntu
sudo apt-get install -y curl git mercurial make binutils bison gcc build-essential
# Redhat/Centos
sudo yum install -y curl git make bison gcc glibc-devel
# Mac
xcode-select --install
brew update
brew install mercurial
选择当前环境使用的shell(zsh、bash),执行shell脚本
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
添加环境变量到
~/.zshrc
或~/.bashrc
export GO_BINARY_BASE_URL=https://golang.google.cn/dl/
[[ -s "$HOME/.gvm/scripts/gvm" ]] && source "$HOME/.gvm/scripts/gvm"
配置解释
命令中的 GO_BINARY_BASE_URL
变量,定义了我们将从何处下载 Golang 的二进制文件进行安装。当然,你也可以将其替换为下面的任意一个。
# 官方地址
https://go.dev/dl/
# 官方国内镜像地址
https://golang.google.cn/dl/
# 阿里云镜像
https://mirrors.aliyun.com/golang/
# 中科大镜像
http://mirrors.ustc.edu.cn/golang/
使用
可以使用
gvm help
查看所有可用的命令
gvm version #查看安装的gvm版本
gvm listall # 获取所有服务器上可安装的golang版本集合
gvm list # 查看本地已经安装的golang版本集合
gvm install go1.17 -B # 二进制文件的方式安装golang1.17到本地
gvm use go1.17 --default # go1.17设为默认版本
扩展
Go 1.5+ 从工具链中删除了 C 编译器,并用Go 编写的编译器替换了它们。Go 1.5+ 需要 go1.4+。Go 1.20+ 需要 go1.17.3+。
gvm install go1.4 -B
gvm use go1.4
export GOROOT_BOOTSTRAP=$GOROOT # 1.5+依赖于1.4+, 因此先切换到1.4版本,然后指向1.4
gvm install go1.17.13
gvm use go1.17.13
export GOROOT_BOOTSTRAP=$GOROOT # 1.20+依赖于1.17.3+, 因此先切换到1.17.13版本,然后指向1.17.13
gvm install go1.20
gvm use go1.20
如果需要使用源码包编译安装,则会根据GO_SOURCE_URL
的默认值从https://github.com/golang/go.git
官方仓库下载源码,然后编译,默认GitHub源下载过慢,解决办法:
可以通过设置
GO_SOURCE_URL
变量为其他仓库源,但是gvm下载源码是没有任何进度的,容易误认为卡死export GO_SOURCE_URL=https://ghproxy.net/https://github.com/golang/go.git
可以手动将仓库克隆到路径
$GVM_ROOT/archive/go
下,然后就可以直接使用啦git clone https://ghproxy.net/https://github.com/golang/go.git $GVM_ROOT/archive/go