使用 g 可以在 Windows/Linux/macOS 上切换使用不同版本的 golang,本文价绍了windows的cmd手动安装/windows的PowerShell手动安装/Windows自动安装/linux(macOS)的手动安装/Linux(macOS)的自动安装
GitHub仓库地址
https://github.com/voidint/g
GitHub下载连接
https://github.com/voidint/g/releases
Windows安装
习惯使用cmd的用户推荐使用第一种方式手动安装(cmd);
习惯使用PowerShell的用户推荐使用第二种方式手动安装(PowerShell),但是这里需要了解一些计算机基础知识,后面讲解到原因;
windows安装出现问题处理起来很麻烦,自动安装不好排查问题,所以推荐手动安装一步到位。
强烈推荐安装最新版本的g版本管理工具
1、手动安装(cmd)
**注意:**强烈推荐先删除已经安装的golang版本后再安装使用版本管理工具g
删除方法:Windows设置 > 应用 > golang
**提示:**最好选择最新版本,可以体验最新功能
1.进入下载链接后下载后缀为
.windows-amd64.zip
的最新版本压缩包
2.创建自定义目录(这里的目录可以自行设置,只要配置的环境变量和这个是统一的即可):
D:\g
3.配置环境变量
**Win11位置:**系统 > 系统信息 > 高级系统设置 > 环境变量(N)… > 系统变量(S)
其他windows版本可百度查找
**注意:**此处指的是在系统变量里面新建变量和值;系统变量里面的Path变量添加值;配置好之后一定要点击确定关闭窗口。
#系统变量
#设置镜像,国内无法自由访问官网,为确保使用现在安装go流程,设置国内镜像点
变量:G_MIRROR
值:https://golang.google.cn/dl/
#设置g的工作目录(go的下载安装目录),这里配置为 g.exe 根目录
变量:G_HOME
值(这里是和上面自定义目录一致的):D:\g
#配置GOROOT,这个指向g工作目录下的go,g安装go版本后,会在这个路径下软链接到versions目录下的指定版本,用来控制当前的go版本,如果安装g之前已经安装过go了,需要修改GOROOT这个环境变量。
变量:GOROOT
值:%G_HOME%\go
#开启所有的实验特性,配置支持自定义安装目录,不开启默认下载的go默认会安装到C:\Users\你的用户名\.g 目录下(及 G_HOME 会自动设置为默认目录下,设置的G_HOME会无效)
变量:G_EXPERIMENTAL
值:true
#配置GOBIN
变量:GOBIN
值:%GOROOT%\bin
#变量Path的值添加
#设置 g.exe 目录(及 g.exe 文件所在目录),这样就可以使用命令行随时访问
值(这里是和上面自定义目录一致的):D:\g
#配置 golang 执行文件目录
值:%GOBIN%
4.测试
cmd终端输入:g env 或者g -v可查看环境变量配置或版本信息
查询到相关信息即安装成功
**注意1:**如果在终端工具中输入go version不显示版本,那可能是GOBIN环境变量没生效,你需要把他变为全路径,比如上面自定义目录拼接\go\bin的(需要根据自定义路径拼接):D:\g\go\bin
**注意2:**如果上述配置依然不生效(或者只生效了一段时间)执行如下操作:
**Win11位置:**设置 > 应用 > golang
进入到如上应用的位置删除golang即可
2、手动安装(PowerShell)
1.创建目录,命令:
mkdir ~/.g/bin
2.下载release的Windows版本的二进制压缩包,下载后缀名为
.windows-amd64.zip
的压缩包,解压之后放到~/.g/bin
目录下
3.修改PowerShell默认的配置文件
这里就需要一些计算机基础了,目前g的官网给出的方案是执行命令code $PROFILE
, 这个命令会用 vscode 打开默认的 powershell 配置文件,但是不是所有的人都用VSCode这个工具的,这个需要单独安装,如果已有用户这里就可以执行上面命令,打开默认配置文件,所以我在这里再扩展些其他方法:
-
方法1:使用官方推荐的方式进行PowerShell配置
-
检查Powershell默认配置文件是否存在,执行命令:Test-Path $PROFILE
存在就继续,不存在就创建默认配置文件,创建默认配置文件请看博主另一篇博客:Windows11终端升级PowerShell7
-
执行命令
code $PROFILE
-
在打开的powershell 的默认配置文件中加入如下内容:
# 这里的 $ 符号一定要带上,一定要带上,一定要带上 $env:GOROOT="$HOME\.g\go" $env:Path=-join("$HOME\.g\bin;", "$env:GOROOT\bin;", "$env:Path")
-
关闭 PowerShell 终端重新打开,就可以使用 g 命令了
-
-
方法2:不使用官方方式修改配置文件,手动处理配置文件,这样更灵活,不用安装VSCode
-
手动处理配置文件需要观看博主的另一篇博客:Windows11终端升级PowerShell7
-
按照博客配置完成后,执行命令
$PROFILE
获取配置文件位置,不是一样的,这个是博主的,读者需要按照自己的路径自行调整:C:\Users\Administrator\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 -
进入到文件躲在目录:C:\Users\Administrator\Documents\PowerShell\ 下
-
鼠标右键可以使用文本编辑器打开文件,这里就可以自行指定文本编辑器打开文件了
-
在打开的powershell 的默认配置文件中加入如下内容:
# 这里的 $ 符号一定要带上,一定要带上,一定要带上 $env:GOROOT="$HOME\.g\go" $env:Path=-join("$HOME\.g\bin;", "$env:GOROOT\bin;", "$env:Path")
-
关闭 PowerShell 终端重新打开,就可以使用 g 或者 gvm 命令了
-
4.如果g别名被占用,可以修改上面解压的g.exe文件为其他名字,比如:gvm.exe
3、自动安装(PowerShell)
// 注意:复制命令的时候 $ 不要复制上(不过目前我在win11上测试安装的时候发现这个脚本有问题导致无法安装,所以暂时不推荐自动安装这种方式)
// 尽量管理员PowerShell下运行
$ iwr https://raw.githubusercontent.com/voidint/g/master/install.ps1 -useb | iex
Linux/macOS安装
**注意:**如果系统中已经安装过golang编译器,优先推荐手动安装,自动安装可能会遇到一些坑;系统中没有安装过golang编译器的推荐自动安装,更方便快捷。
1、手动安装
最好选择最新版本,可以体验最新功能
1.进入下载链接后下载后缀为
.linux-amd64.tar.gz
的最新版本压缩包
2.创建自定义目录(这里的目录可以自行设置,只要配置的环境变量和这个是统一的即可,推荐此目录):
~/.g
3.切换到
~/.g
创建一个bin
目录,由此完整目录~/.g/bin
(这里分出两步是为了给刚接触linux不久的方便理解,可以直接一步到位)
4.将所需的环境变量写入
~/.g/env
文件
注意:$ 不要复制粘贴出来,这条命令是226行内容写到目录/.g下的env文件中
$ cat >~/.g/env <<'EOF'
#!/bin/sh
# g shell setup
export GOROOT="${HOME}/.g/go"
export PATH="${HOME}/.g/bin:${GOROOT}/bin:$PATH"
export G_MIRROR=https://golang.google.cn/dl/
EOF
5.将
~/.g/env
导入到 shell 环境配置文件(如~/.bashrc
、~/.zshrc
…)
同理如上第4条;当前使用的是~/.bashrc;
$ cat >>~/.bashrc <<'EOF'
# g shell setup
if [ -f "${HOME}/.g/env" ]; then
. "${HOME}/.g/env"
fi
EOF
6.启用环境变量
使用~/.bashrc就执行如下命令:
source ~/.bashrc
使用~/.zshrc就执行如下命令:
source ~/.zshrc
2、自动安装
-
Linux/macOS(适用于 bash、zsh)
# 建议安装前清空`GOROOT`、`GOBIN`等环境变量 $ curl -sSL https://raw.githubusercontent.com/voidint/g/master/install.sh | bash $ cat << 'EOF' >> ~/.bashrc # 可选。检查g别名是否被占用 if [[ -n $(alias g 2>/dev/null) ]]; then unalias g fi EOF $ source "$HOME/.g/env"
Goland终端Terminal注意事项
问题:
在goland的终端Terminal中使用PowerShell的时候执行g ls
等命令可能出现报错(Windows终端的Power Shell 7不会出现问题):
Windows PowerShell
版权所有(C) Microsoft Corporation。保留所有权利。
安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindows
PS D:\wyl\workspace\go\board> g ls
g : 无法将“g”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路
径,请确保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ g ls
+ ~
+ CategoryInfo : ObjectNotFound: (g:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
原因:
goland的终端Terminal默认只会使用windows下的 PowerShell 5(问题路径:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe),这可能是因为goland和windows的兼容问题导致的
解决办法:
找到PowerShell 7的可执行文件pwsh.exe,把goland的默认终端选项修改为正确的地址即可,一般golang默认使用的PowerShell 5地址就是这个C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
(这里可能还有其他的比如cmd和git bash等就不介绍了,不人为更改的话默认就是PS)
正确地址(可以直接复制粘贴-如果是PS7-preview版本):C:\Program Files\PowerShell\7-preview\pwsh.exe
如果直接粘贴没有生效或者找不到文件,大概率是版本不同导致的,可以按照C:\Program Files\PowerShell
一级一级找下去,直到找到正确的为止
操作:
路径:Goland > File > Settings > Tools > Terminal > Shell path: > Select Path / Shell executable path
按照上面的路径在goland的设置中找到工具下的终端Terminal的Shell path,点击右侧的...
会弹出一个Select Path的窗口,可以看到Shell executable path的一个标题,标题下面就是查找路径,找到对应的正确的pwsh.exe位置选中即可
验证:
关闭已打开的终端,即可看到默认头已经改变
旧头:
Windows PowerShell
版权所有(C) Microsoft Corporation。保留所有权利。
安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindows
PS D:\wyl\workspace\go\board>
新头:
PowerShell 7.6.0-preview.4
PS D:\wyl\workspace\go\board>
再次执行g ls
发现已经可以使用
基本使用命令
g ls-remote:查看可安装的golang版本
g install 版本号:下载安装指定版本号版本
g self update:自动升级至最新版本
g ls:查询已安装的go版本
g ls-remote stable:查询当前可供安装的stable状态的go版本
g use 版本号:切换至指定版本,需已下载
g uninstall 版本号:卸载一个已安装的go版本