如何同时安装多个不同版本的Go?GVM就可以!


GVM

安装过程中,如果遇到了错误,还是直接先访问仓库地址看看文档介绍,可能解决得更快。

安装并使用

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

# 也可以先把脚本先下载下来,然后执行
curl -o gvm-installer https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer
chmod +x gvm-installer
./gvm-installer

查看可用的 go 版本

gvm listall

安装特定版本的 go

# 这里的版本号由 `gvm listall` 命令返回的版本号之一
gvm install go1.16.5
# 下载后的 go 位于 `~/.gvm/gos` 目录下

查看当前正在使用的 go 版本

gvm list

# gvm gos (installed)
#
#   go1.17
#   go1.17.13
#   go1.20.8
#=> go1.21.0
#   system

使用特定版本的 go

gvm use go1.16.5
# 设置为默认版本的 go
gvm use go1.16.5 --default

卸载特定版本的 go

gvm uninstall go1.16.5

慎重!!! 完全卸载掉 GVM 和所有安装的 Go 版本

gvm implode

# 如果以上的命令不奏效的话,也可以直接
rm -rf $GVM_ROOT
# 然后去除掉 ~/.zshrc 文件中的类似以下内容即可(如果使用的是 bash 则在 ~/.bashrc 文件中)
[[ -s "/Users/pudongping/.gvm/scripts/gvm" ]] && source "/Users/pudongping/.gvm/scripts/gvm"

使用 GVM pkgset

使用 pkgset 可以将你每一个项目的依赖包都分隔开来。

# 查看系统环境变量
echo $PATH
# 可见已经将 `~/.gvm/bin` 加入了环境变量中
# /Users/pudongping/.gvm/bin

先使用特定的版本,比如 go1.21.0

gvm use go1.21.0

# Now using version go1.21.0

gvm list

# gvm gos (installed)
#
#   go1.17
#   go1.17.13
#   go1.20.8
#=> go1.21.0
#   system

echo $PATH
# /Users/pudongping/.gvm/pkgsets/go1.21.0/global/bin:/Users/pudongping/.gvm/gos/go1.21.0/bin:/Users/pudongping/.gvm/pkgsets/go1.21.0/global/overlay/bin:/Users/pudongping/.gvm/bin
# 此时可见多添加了
# ~/.gvm/pkgsets/{GO_VERSION}/global/bin
# ~/.gvm/gos/{GO_VERSION}/bin
# ~/.gvm/pkgsets/{GO_VERSION}/global/overlay/bin

echo $GOPATH
# /Users/pudongping/.gvm/pkgsets/go1.21.0/global

查看 global pkgset

gvm pkgset list

#gvm go package sets (go1.21.0)
#
#=>  global

创建特定的 pkgset

# 创建一个名为 `ppGvm` 的 pkgset
gvm pkgset create ppGvm

gvm pkgset list
#
#gvm go package sets (go1.21.0)
#
#=>  global
#    ppGvm
 
# 此时查看系统环境变量,还不会将 `ppGvm` 加入    
echo $PATH
# /Users/pudongping/.gvm/pkgsets/go1.21.0/global/bin:/Users/pudongping/.gvm/gos/go1.21.0/bin:/Users/pudongping/.gvm/pkgsets/go1.21.0/global/overlay/bin:/Users/pudongping/.gvm/bin
echo $GOPATH
# /Users/pudongping/.gvm/pkgsets/go1.21.0/global

# 使用 `ppGvm` pkgset
gvm pkgset use ppGvm
# Now using pkgset go1.21.0@ppGvm

gvm pkgset list
#
#gvm go package sets (go1.21.0)
#
#    global
#=>  ppGvm

# 此时可以看到,已经将 `ppGvm` 加入到环境变量中
echo $PATH
# /Users/pudongping/.gvm/pkgsets/go1.21.0/ppGvm/bin:/Users/pudongping/.gvm/pkgsets/go1.21.0/ppGvm/overlay/bin:/Users/pudongping/.gvm/pkgsets/go1.21.0/global/bin:/Users/pudongping/.gvm/gos/go1.21.0/bin:/Users/pudongping/.gvm/pkgsets/go1.21.0/global/overlay/bin:/Users/pudongping/.gvm/bin

echo $GOPATH
# /Users/pudongping/.gvm/pkgsets/go1.21.0/ppGvm:/Users/pudongping/.gvm/pkgsets/go1.21.0/global

如果此时你通过 go get 下载 go 包的话,你可以看到新的包被添加到了以下目录下

cd $( awk -F':' '{print $1}' <<< $GOPATH )
# 或者直接 cd /Users/pudongping/.gvm/pkgsets/go1.21.0/ppGvm

pwd
#/Users/pudongping/.gvm/pkgsets/go1.21.0/ppGvm

文章作者: Alex
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Alex !
评论
  目录