Featured image of post g,Go的多版本管理工具

g,Go的多版本管理工具

概述

g 是管理 go 版本的工具,可以简化 go 的版本管理。

源码:https://github.com/voidint/g

安装

自动安装-Linux/MacOS

适用于 bash、zsh

1
2
# 建议安装前清空`GOROOT`、`GOBIN`等环境变量
curl -sSL https://raw.githubusercontent.com/voidint/g/master/install.sh | bash
1
echo "unalias g" >> ~/.bashrc # 可选。若其他程序(如'git')使用了'g'作为别名。
1
source "$HOME/.g/env"

自动安装-Windows

目前经我测试有问题,请手动安装

适用于 pwsh

1
iwr https://raw.githubusercontent.com/voidint/g/master/install.ps1 -useb | iex

手动安装-Linux/macOS

创建 g 家目录(推荐~/.g目录)

1
2
mkdir -p ~/.g \
mkdir -p ~/.g/bin

下载 release 的二进制压缩包,并解压至 g 家目录下的 bin 子目录中(即~/.g/bin目录)

1
2
3
wget https://github.com/voidint/g/releases/download/v1.7.0/g1.7.0.linux-amd64.tar.gz

tar -zxvf g1.7.0.linux-amd64.tar.gz -C ~/.g/bin

将所需的环境变量写入~/.g/env文件

1
2
3
4
5
6
7
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

~/.g/env导入到 shell 环境配置文件(如~/.bashrc~/.zshrc…)

1
2
3
4
5
6
cat >>~/.bashrc <<'EOF'
# g shell setup
if [ -f "${HOME}/.g/env" ]; then
    . "${HOME}/.g/env"
fi
EOF

刷新环境变量

1
source ~/.bashrc # 或source ~/.zshrc

手动安装-Windows

创建目录

1
%USERPROFILE%/.g/bin

下载 release 的 windows 版本的二进制压缩包

解压之后放到%USERPROFILE%/.g/bin目录下

默认二进制文件名是 g.exe, 如果你已经用 g 这个命令已经用作为 git 的缩写,那么你可以把 g.exe 改为其他名字,如 gvm.exe

%USERPROFILE%/.g/bin添加到系统环境变量

添加GOROOT环境变量

命令介绍

查询当前可供安装的 go 版本

1
g lsr

查询当前可供安装的stable状态的 go 版本

1
g ls-remote stable

安装指定 go 版本1.22.4

1
g install 1.22.4

查询已安装的 go 版本

1
g ls

使用已安装的 go 版本

1
g use 1.19.10

卸载一个已安装的 go 版本

1
g uninstall 1.19.10

清空 go 安装包文件缓存

1
g clean

查看 g 版本信息

1
g version

更新 g 软件本身

1
g self update

卸载 g 软件本身

1
g self uninstall

环境变量

环境变量G_MIRROR有什么作用?

由于中国大陆无法自由访问 Golang 官网,导致查询及下载 go 版本都变得困难,因此可以通过该环境变量指定一个或多个镜像站点(多个镜像站点之间使用英文逗号分隔),g 将从该站点查询、下载可用的 go 版本。已知的可用镜像站点如下:

当该环境变量的值为true时,将开启所有的实验特性

环境变量G_HOME有什么作用?

按照惯例,g 默认会将~/.g目录作为其家目录。若想自定义家目录(Windows 用户需求强烈),可使用该环境变量切换到其他家目录。由于该特性还属于实验特性,需要先开启实验特性开关G_EXPERIMENTAL=true才能生效。特别注意,该方案并不十分完美,因此才将其归类为实验特性,详见#18

更多配置

修改 g 的安装目录

需要添加几个环境变量

  • G_EXPERIMENTAL=true,开启实验特性支持,请参考:FAQ
  • G_HOME,指向 g 的安装目录
  • GOROOT,指向 go 的目录

相似项目

gvm

https://github.com/moovweb/gvm

goenv

https://github.com/go-nv/goenv

使用 Hugo 构建
主题 StackJimmy 设计