Mac 使用 GVM 管理多版本 Go 环境

使用 GVM 管理多版本 Go 环境

在本文中,我们将使用 gvm(Go Version Manager)工具管理本地多个 Go 语言版本。gvm 功能类似于 Python 的 Anaconda,可以方便地切换不同版本的 Go 环境,非常适合需要多版本开发与测试的场景。

需要注意的是,gvm 在第一次安装 Go 时,需要终端环境中已经存在一个可用的 Go 语言版本 ,因为 gvm 需要依赖现有的 Go 环境来编译安装新的版本。为了满足这一需求,我们可以使用 macOS 的 Homebrew 先安装一个临时的 Go 版本,待 gvm 安装完成后,再将 Homebrew 安装的 Go 删除。


1. 使用 Homebrew 安装 Go

首先,我们需要通过 Homebrew 安装一个基础版本的 Go:

bash 复制代码
# 安装 Go
brew install go

# 验证安装是否成功
go version
which go

运行以上命令后,你应该可以看到当前安装的 Go 版本号以及 Go 可执行文件的路径。


2. 安装 GVM

接下来,我们安装 gvm 工具。gvm 会被安装到用户的主目录下(~/.gvm):

bash 复制代码
# 安装 gvm
bash < <(curl -sSL https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)

# 安装完成后,加载 gvm
source ~/.gvm/scripts/gvm

运行上述命令后,gvm 应该已经成功安装,可以通过以下命令验证:

bash 复制代码
gvm version

3. 使用 GVM 安装 Go

现在我们可以使用 gvm 安装和管理多个 Go 版本。

查看可用的 Go 版本

bash 复制代码
gvm listall

gvm 会列出所有可用的 Go 版本,你可以选择其中一个版本进行安装。

安装特定版本的 Go

bash 复制代码
gvm install go1.20

安装完成后,你可以通过以下命令查看已安装的版本:

bash 复制代码
gvm list

删除 Homebrew 安装的 Go

由于 gvm 已经安装了 Go,现在可以删除通过 Homebrew 安装的临时 Go:

bash 复制代码
brew uninstall go

切换到某个版本的 Go

bash 复制代码
gvm use go1.20 --default

这会将 Go 的默认版本设置为 go1.20,后续每次打开终端时都会自动使用该版本。

验证安装

bash 复制代码
go version
which go

运行以上命令,确保 go 的版本和路径都指向 gvm 管理的版本。


4. 安装其他版本的 Go

如果需要安装其他版本的 Go,例如 go1.23.5,可以运行以下命令:

bash 复制代码
gvm install go1.23.5

安装完成后,你可以随时通过 gvm use 切换版本,或者使用 gvm use go1.23.5 --default 将其设置为默认版本。


5. 在 VS Code 中使用 Go

在开发过程中,我们通常会使用 VS Code 作为 Go 语言的 IDE。为了支持 Go 的开发,你需要安装官方的 Go 插件:

  1. 打开 VS Code 的扩展市场(Extensions)。
  2. 搜索并安装 Go 插件。
  3. 插件安装完成后,VS Code 会自动检测你的 Go 环境。

如果 VS Code 没有正确识别你通过 gvm 安装的 Go 版本,可以参考以下步骤手动配置:

  • 打开 VS Code 设置(Cmd + ,Ctrl + ,)。

  • 搜索 Go: GOROOT,并将其设置为 gvm 中的 Go 路径,例如:

    复制代码
    ~/.gvm/gos/go1.20

在 VS Code 中调试环境变量

在 VS Code 的集成终端中,运行以下命令,确保它能够正确识别 gvm 管理的 Go 版本:

bash 复制代码
go version
go env

如果 VS Code 的终端与外部终端行为不一致(例如无法正确识别 GOROOT),可以在 VS Code 的设置中配置终端环境变量。


6. 环境变量及相关命令

在 Go 开发中,环境变量(如 GOPATHGOROOT 等)非常重要,以下是一些常用的环境变量管理和调试命令:

查看当前 Go 环境变量

运行以下命令查看当前 Go 环境的所有配置:

bash 复制代码
go env

你会看到类似的输出:

text 复制代码
GO111MODULE="on"
GOPATH="/Users/yourname/go"
GOROOT="/Users/yourname/.gvm/gos/go1.20"

查看特定环境变量

如果只想查看某个环境变量的值,可以运行:

bash 复制代码
go env GOROOT
go env GOPATH

设置 GOPATH

如果需要自定义 GOPATH,可以在 shell 配置文件(如 ~/.bashrc~/.zshrc)中添加以下内容:

bash 复制代码
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$PATH

然后运行以下命令使配置生效:

bash 复制代码
source ~/.bashrc    # 如果使用 bash
source ~/.zshrc     # 如果使用 zsh

检查 Go 的可执行文件路径

bash 复制代码
which go

这个命令会返回当前终端中使用的 go 的可执行文件路径(例如 ~/.gvm/gos/go1.20/bin/go)。如果路径不正确,可以检查是否存在多个 Go 版本冲突。


相关推荐
weixin_4624462321 小时前
nodejs 下使用 Prettier 美化单个 JS 文件(完整教程)
开发语言·javascript·ecmascript
醇氧21 小时前
【Windows】从守护到终结:解析一个 Java 服务的优雅停止脚本
java·开发语言·windows
reasonsummer21 小时前
【办公类-18-07】20251215(Python)“口腔检查涂氟信息”批量生成打印(区名、学号、姓名、学校、班级、身份证、户籍、性别、民族)
开发语言·python
小鹿学程序21 小时前
FileZilla连接到虚拟机
java·服务器·开发语言
未来魔导1 天前
Gin版本的路由总结
开发语言·llm·gin·路由
周杰伦_Jay1 天前
【Eino框架】Go语言驱动的LLM应用开发新范式
开发语言·后端·golang
上78将1 天前
Java中既有编译执行又有解释执行,这个怎么理解?
java·开发语言
一个无名的炼丹师1 天前
【硬核实战】Python处理多源异构文档:从读取到智能信息提取的统一框架深度剖析
开发语言·python
Mr_Xuhhh1 天前
JAVA期末重点
java·开发语言·python
a程序小傲1 天前
小红书Java面试被问:java创建对象有哪些方式?
java·开发语言·面试