golang 版本管理工具
Table of Contents
简介
g是一个Linux、macOS、Windows下的命令行工具,可以提供一个便捷的多版本go环境的管理和切换。
github地址: https://github.com/voidint/g
特性
- 支持列出可供安装的go版本号
- 支持列出已安装的go版本号
- 支持在本地安装多个go版本
- 支持卸载已安装的go版本
- 支持在已安装的go版本之间自由切换
自动化安装
# 建议安装前清空`GOROOT`、`GOBIN`等环境变量
$ curl -sSL https://raw.githubusercontent.com/voidint/g/master/install.sh | bash
$ echo "unalias g" >> ~/.bashrc # 可选。若其他程序(如'git')使用了'g'作为别名。
$ source ~/.bashrc # 或者 source ~/.zshrc
手动安装
下载release 的二进制压缩包
将压缩包解压至PATH环境变量目录下(如/usr/local/bin)
编辑shell环境配置文件(如~/.bashrc、~/.zshrc…)
$ cat>>~/.bashrc<<'EOF' export GOROOT="${HOME}/.g/go" export PATH="${HOME}/.g/go/bin:$PATH" export G_MIRROR=https://golang.google.cn/dl/ EOF
启用环境变量
$ source ~/.bashrc # 或source ~/.zshrc macos: vim ~/.bash_profile,加入source ~/.bashrc解决问题。
使用
1.查看g版本
g --help
NAME:
g - Golang Version Manager
USAGE:
g command [arguments...]
VERSION:
1.2.1
AUTHOR:
voidint <voidint@126.com>
COMMANDS:
ls List installed versions
ls-remote List remote versions available for install
use Switch to specified version
install Download and install a version
uninstall Uninstall a version
clean Remove files from the package download directory
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--help, -h show help
--version, -v print the version
COPYRIGHT:
Copyright (c) 2019-2021, voidint. All rights reserved.
g --version
g version 1.2.1
build: 2021-10-05T15:19:17+08:00
branch: release/1.2.1
commit: 674c2616724f983f51dfe8030637f46f51da715b
2.查询当前可供安装的stable状态的go版本
g ls-remote stable
1.16.12
1.17.5
3.安装目标go版本1.17.5和1.16.12
g install 1.17.5
Downloading 100% |███████████████| (130/130 MB, 16.578 MB/s) [7s:0s]
Computing checksum with SHA256
Checksums matched
Now using go1.17.5
g install 1.16.12
Downloading 100% |███████████████| (125/125 MB, 16.947 MB/s) [7s:0s]
Computing checksum with SHA256
Checksums matched
Now using go1.16.12
4.查询已安装的go版本
g ls
* 1.16.12
1.17.5
5.查询可供安装的所有go版本
g ls-remote
1
1.2.2
1.3rc1
1.3rc2
...
* 1.16.12
1.17beta1
1.17rc1
1.17rc2
1.17
1.17.1
1.17.2
1.17.3
1.17.4
1.17.5
1.18beta1
6.切换到另一个已安装的go版本
g use 1.17.5
go version go1.17.5 darwin/amd64
go env | grep VERSION
GOVERSION="go1.17.5"
7.卸载一个已安装的go版本
g ls
1.16.12
* 1.17.5
g uninstall 1.16.12
Uninstalled go1.16.12
g ls
* 1.17.5
g 目录结构
cd ~/.g
total 0
drwxr-xr-x 5 steven staff 160 12 28 15:00 .
drwxr-xr-x+ 80 steven staff 2560 12 28 15:23 ..
drwxr-xr-x 4 steven staff 128 12 28 14:41 downloads
lrwxr-xr-x 1 steven staff 32 12 28 15:00 go -> /Users/steven/.g/versions/1.17.5
drwxr-xr-x 4 steven staff 128 12 28 15:00 versions
cd downloads/
~/.g/downloads$ ll
total 523056
drwxr-xr-x 4 steven staff 128 12 28 14:41 .
drwxr-xr-x 5 steven staff 160 12 28 15:00 ..
-rw-r--r-- 1 steven staff 131024468 12 28 14:41 go1.16.12.darwin-amd64.tar.gz
-rw-r--r-- 1 steven staff 136774992 12 28 14:41 go1.17.5.darwin-amd64.tar.gz
~/.g/versions$ ll
total 0
drwxr-xr-x 4 steven staff 128 12 28 15:00 .
drwxr-xr-x 5 steven staff 160 12 28 15:00 ..
drwxr-xr-x 20 steven staff 640 12 28 15:00 1.16.12
drwxr-xr-x 19 steven staff 608 12 28 14:41 1.17.5
FAQ
环境变量G_MIRROR有什么作用?
由于中国大陆无法自由访问Golang官网,导致查询及下载go版本都变得困难,因此可以通过该环境变量指定一个镜像站点,如:https://golang.google.cn/dl/ ,g将从该站点查询、下载可用的go版本。是否支持网络代理?
支持。可在HTTP_PROXY、HTTPS_PROXY、http_proxy、https_proxy等环境变量中设置网络代理地址。支持哪些Windows版本?
因为g的实现上依赖于符号链接,因此操作系统必须是Windows Vista及以上版本。Windows 版本安装以后不生效?
这有可能是因为没有把下载安装的加入到 $Path 的缘故,需要手动将 $Path 纳入到用户的环境变量中。为了方便起见,可以使用项目中的 path.ps1 的 PowerShell 脚本运行然后重新启动计算机即可。支持源代码编译安装吗?
不支持
参考文档
1.g