前言
Go 语言(Golang)发展迅速,经常需要切换不同版本来进行开发、测试或兼容旧项目。GVM(Go Version Manager,由 moovweb 开发)是一个经典的 Go 版本管理工具,它可以轻松安装、管理多个 Go 版本,并切换使用。
虽然 GVM 项目已不再活跃维护(最后更新在 2023 年),但它在许多场景下仍然可用,尤其是支持从二进制直接安装现代 Go 版本(如 go1.25.x)。
1. GVM 安装
系统要求
-
Linux(Debian/Ubuntu) :
bashsudo apt-get install curl git mercurial make binutils bison gcc build-essential -
macOS :
安装 Xcode Command Line Tools 和 Mercurial:bashxcode-select --install brew update brew install mercurial -
其他系统 :确保有
curl、git、mercurial、make、bison等工具。
安装 GVM
使用官方安装脚本(支持 bash 或 zsh):
bash
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
如果是 zsh:
bash
zsh < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
安装完成后,重启终端 或执行:
bash
source ~/.gvm/scripts/gvm
验证:
bash
gvm version
2. 安装 Go 版本(重点:推荐使用二进制安装)
GVM 默认从源码编译 Go,但现代 Go(1.5+)需要一个现有的 Go 来引导编译。如果没有已安装的 Go,就会出现错误:
/root/.gvm/scripts/install: line 93: go: command not found
ERROR: Failed to compile...
最佳实践:优先使用 --binary(或 -B)从官方二进制安装,速度快、无需引导。
bash
# 安装最新版(例如 go1.25.5,根据 https://go.dev/dl/ 调整)
gvm install go1.25.5 --binary
# 切换到该版本
gvm use go1.25.5
# 设置为默认版本(可选)
gvm use go1.25.5 --default
验证:
bash
go version
# 输出:go version go1.25.5 linux/amd64(或你的平台)
如果需要从源码编译(不推荐,除非特殊需求)
先用二进制安装一个较新版本作为引导:
bash
gvm install go1.22.7 --binary # 或任意支持二进制的版本
gvm use go1.22.7 --default
# 然后安装目标版本(从源码)
gvm install go1.25.5
3. 常用命令
-
列出已安装版本 (当前版本前有
=>):bashgvm list -
列出所有可用版本(包括历史和 weekly):
bashgvm listall # 加 --all 显示更多 gvm listall --all -
卸载版本:
bashgvm uninstall go1.xx.x -
完全卸载 GVM(谨慎!会删除所有 Go 版本):
bashgvm implode
4. 网络代理设置(中国用户必备)
GVM 本身没有内置代理命令,但依赖系统代理和 Go 环境变量。
下载 Go 时(二进制/源码)的代理
设置 HTTP/HTTPS 代理(添加到 ~/.bashrc 或 ~/.zshrc):
bash
export http_proxy=http://你的代理:端口
export https_proxy=http://你的代理:端口
export HTTP_PROXY=$http_proxy
export HTTPS_PROXY=$https_proxy
# SOCKS5 可选
export all_proxy=socks5://你的代理:端口
然后再执行 gvm install。
Go 模块代理(go get / go mod)
推荐永久设置国内镜像(加速模块下载):
bash
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOPROXY=https://goproxy.io,direct # 或者阿里云等
go env -w GOSUMDB=off # 可选,关闭校验(如果 sum.golang.org 访问慢)
验证:
bash
go env GOPROXY
5. 注意事项与替代方案
但对于许多老项目,GVM 依然是可靠的选择。
希望这篇指南帮到你!