Golang多版本安装指南

Golang多版本安装指南 macOS 10.14 Mojave
Golang 1.11

您好,我正在运行 Go 1.11,但尝试安装 https://github.com/icexin/gocraft 时遇到了一些问题。作者询问我是否能在 Go 1.10 环境下运行,所以我的问题是:如何以最简便的方式(即避免从源码编译)在保留 1.11 的同时安装 1.10 版本?

我尝试过搜索,但只找到了需要从源码编译的旧解决方案。

7 回复

你无需重新打开终端。只需使用以下任一命令即可,它们的作用相同:

. ~/.bash_profile
source ~/.bash_profile

更多关于Golang多版本安装指南的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你试过 asdf + asdf-golang 吗?

NobbZ:

你尝试过 asdf + asdf-golang 吗?

我刚刚安装了 asdfasdf-golang,它们似乎安装正常。问题在于安装完成后,如何使用它们完全不清楚,而且文档似乎缺少这部分关键信息,除非我遗漏了什么显而易见的内容。

有什么线索吗?

引用 nathankerr:

1.10 版本很简单,你可以通过以下命令获取:

go get golang.org/x/build/version/go1.10.3

感谢 Nathan,我知道之前见过类似的方法。只是一时想不起具体细节了。我已经卸载了 asdf。遗憾的是相关包在 go 1.10.3 环境下仍然无法运行,但至少现在我可以轻松切换版本了。这还为我提供了在 GO111MODULE=onGO111MODULE=off 环境间快速切换的便捷方式。我现在为 go1.10.3 创建了别名 goo(即 go old 的缩写)!

获取1.10版本很简单,你可以通过以下命令实现:

go get golang.org/x/build/version/go1.10.3

你将得到一个名为go1.10.3的二进制文件,通过它就可以使用go1.10.3版本。首次运行时,它会提示你执行go1.10.3 download命令来下载对应平台的二进制发行版。之后当你需要该版本时,只需使用go1.10.3替代go命令即可。

想了解更多工作原理,请阅读我的文章尝试其他Go版本

在 Mac 系统上管理多个 Go 版本最简单的方法是将它们放在 $HOME 文件夹中。您的 Mac 系统必须在 $HOME 文件夹中有一个 .bash_profile 文件。请在其中添加以下内容:

GOROOT=${HOME}/go
GOPATH=${HOME}
PATH=$PATH:/${GOROOT}/bin:${GOPATH}/bin
export PATH GOPATH GOROOT

GOROOT 是当前 Go 编译器的路径。请根据需要调整 GOPATH。

现在,从 https://golang.org/dl/ 下载各种编译器。解压后记得在名称中添加版本号(例如 go1.11、go1.10)。然后,在 .bash_profile 的 GOROOT 变量中切换当前版本,例如:

GOROOT=${HOME}/go1.10

请注意,每次修改 .bash_profile 后必须重新打开终端才能生效。

sunglasses

在 macOS 10.14 Mojave 上同时管理多个 Go 版本的最简便方法是使用 Go 版本管理工具。我推荐使用 g 工具,它专门为这种场景设计。

以下是安装和使用步骤:

  1. 安装 g 工具:
curl -sSL https://git.io/g-install | sh -s
  1. 安装 Go 1.10:
g install 1.10
  1. 切换版本:
# 切换到 Go 1.10
g set 1.10

# 切换到 Go 1.11  
g set 1.11

# 验证当前版本
go version
  1. 或者使用版本前缀直接运行:
# 使用 Go 1.10 运行程序
g 1.10 go run main.go

# 使用 Go 1.10 构建
g 1.10 go build

g 工具会自动下载预编译的二进制版本,无需从源码编译。所有版本会安装在 ~/.go/versions/ 目录下,切换时只需修改符号链接。

验证安装的示例:

# 安装后验证
g list

# 输出类似:
#   1.10
#   1.11
#   system

# 测试不同版本
g set 1.10
go version  # 输出: go version go1.10 darwin/amd64

g set 1.11  
go version  # 输出: go version go1.11 darwin/amd64

这样你就可以在保留 Go 1.11 的同时,轻松切换到 Go 1.10 来测试那个特定的项目。

回到顶部