Golang版本管理工具GVM

目录

关键字

Go版本管理,GVM

背景环境

我今天尝试运行一个开源项目,但是需要Go1.24,而我本地安装的是Go1.22。我就在想有没有像Python的Anaconda一样的环境管理工具?

我尝试在找了一下,找到一个GVM的开源工具,勉强能满足要求。

操作环境

  • Ubuntu 22

GVM安装

# 安装依赖(如果需要其它依赖自行安装)
sudo apt-get install bison
sudo apt install make

# 安装 GVM
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)

# 重启终端 或 生效GVM配置
source ~/.gvm/scripts/gvm

# 测试安装
gvm version

GVM操作

# 查看已安装Go版本
gvm list

# 查看可用Go版本
gvm listall

# 安装Go
gvm install go1.24.3

# 切换GO版本
gvm use go1.24.3

# 切换并指定默认Go版本
gvm use go1.24.3 --default

# 删除Go版本
gvm uninstall go1.24.3

# 卸载GVM并删除所有Go版本
gvm implode

其它问题

离线安装

在执行:gvm install的时候,如果卡住了,可以使用离线安装的方法。

  1. 下载安装包到 ~/.gvm/archive/目录下
wget -P ~/.gvm/archive/ https://studygolang.com/dl/golang/go1.24.0.linux-amd64.tar.gz
  1. 通过二进制安装
gvm uninstall go1.24.0 --binary
  1. 查看GO版本
gvm list

# output
gvm gos (installed)

   go1.24.0
   system

解决 Go 1.5+ 的编译问题

Go 1.5 及以后版本的编译需要一个已有的 Go 版本进行引导,因此我们需要先安装 Go 1.4:

gvm install go1.4 -B
gvm use go1.4
export GOROOT_BOOTSTRAP=$GOROOT
gvm install go1.7

使用 GVM 管理 GOPATH

GVM 还可以管理不同的 GOPATH,可以在不同项目间切换:

gvm pkgset create my_project
gvm pkgset use my_project

# 如果要删除:
gvm pkgset delete my_project