Go 多版本管理辅助工具, 可以快速安装 Go ( 次要版本 ) 的最新版本,并对过期版本进行清理。
底层使用 https://github.com/golang/dl 来进行多 Go 版本的安装。
依赖:
- 需要设置环境变量
$GOBIN
,可参考如下进行配置:
export GOBIN=$HOME/go/bin # go install 安装的二进制文件所在目录,go1.x命令也将安装到此目录
export PATH=$GOBIN:$PATH # 可以直接在任意位置使用 GOBIN 目录下的所有命令
未安装过 Go 的,请先在 https://go.dev/dl/ 下载安装 Go, 若非 windows 系统(如 Linux & mac ),也可以直接 下载编译好的二进制文件 。
已安装过 Go ,安装和更新:
go install github.com/fsgo/smart-go-dl@latest
smart-go-dl -help
smart-go-dl install go1.22
会自动找到go1.22
最新的版本进行安装,并安装为 $GOBIN/go1.22.5
和 $GOBIN/go1.22
。
如当前 go1.11 的最新版本是 go1.22.5
,则上述 $GOBIN/go1.22
是 $GOBIN/go1.22.5
的软连接。
安装或更新后,会创建软连 $GOBIN/go.latest
,其为当前安装的最新版本。
若 $GOBIN/go
不存在,则也会创建这个软连接,相当于 ln -s go.latest go
,即这个 $GOBIN/go
总是最新版本的 go。
在使用的时候,可以直接使用 go
、go.latest
、go1.22
、go1.22.5
之一:
# go1.22 version
或者
# go1.22.5 version
或者
# go version
输出:
go version go1.22.5 darwin/amd64
以后有新的版本了,重新使用 smart-go-dl install/update go1.22
即可安装最新版本。
使用其他版本示例:
go1.22.0 version # 使用首个正式版本,对应版本号为 go1.22.0
go1.22.1 version # 使用第 1 个正式修正版本,对应版本号为 go1.22.1
go1.22.2 version # 使用第 2 个正式修正版本,对应版本号为 go1.22.2
smart-go-dl install go1.22.5
Go 的每个正式版本是如 go1.22
这种,3 位版本号 0 是缺省的,若要安装,可以这样:
smart-go-dl install go1.22.0
之后这样使用,如 go1.22.0 version
。
将 go1.21
除了最新版本的老版本清理掉:
smart-go-dl clean go1.21
若期望指定版本不被清理,可以使用子命令 lock
,如下为让 go1.22.3
这个版本不被清理:
smart-go-dl lock go1.22.3
于此对应的有 unlock
命令,用于解除 lock 状态。
smart-go-dl update go1.22
等价于先执行 clean,再执行 install。
还可以使用smart-go-dl update
来更新所有已安装版本( gotip 除外 )。
smart-go-dl list
输出:
--------------------------------------------------------------------------------
version latest installed
--------------------------------------------------------------------------------
gotip gotip
go1.23 go1.23rc2
go1.22 go1.22.5 go1.22.5
go1.21 go1.21.12
go1.20 go1.20.14
go1.19 go1.19.13
go1.18 go1.18.10
go1.17 go1.17.13
go1.16 go1.16.15
go1.15 go1.15.15
go1.14 go1.14.15
go1.13 go1.13.15
go1.12 go1.12.17
go1.11 go1.11.13
go1.10 go1.10.8
go1.9 go1.9.7
go1.8 go1.8.7
go1.7 go1.7.6
go1.6 go1.6.4
go1.5 go1.5.4
[smart-go-dl] list success
第一列,若是绿色,说明当前已按照最新版本,若是黄色,安装的不是最新版本。
windows 环境下目前未做终端颜色的适配。
smart-go-dl remove go1.19.1
可选的配置文件为 ~/.config/smart-go-dl/app.toml
:
# 下载时使用的 Proxy,可选
# 不配置或者为空时,会使用环境变量的代理配置
# Proxy="http://127.0.0.1:8128"
# 下载文件时,是否跳过证书校验,可选,默认 false
# InsecureSkipVerify = true
# 下载 Go tar 文件的地址前缀,可选
# 会一次使用每个地址进行尝试
# 默认值是 "https://dl.google.com/go/,https://dl-ssl.google.com/go/"
#TarURLPrefix="https://dl.google.com/go/"
# 安装目录,可选,默认为 ~/sdk
# 不同的 Go 版本在 SDKDir 中以子目录方式存在,如 ~/sdk/go1.22.0/
# SDKDir = ""
该文件在不存在的时候,会尝试自动创建
该程序使用 ${SDKDir}/smart-go-dl/
目录缓存数据,依赖的 https://github.com/golang/dl
也会自动下载到此目录下的 golang_dl
子目录中。
首次使用时会使用 git clone
命令下载 golang_dl
,之后会使用 git pull
命令检查更新。
因 golang_dl 更新频率很低,也为了使用 smart-go-dl
时更流畅,更新时间间隔在 1 分钟内,
再次使用时不会使用 git pull
检查更新。
若因为某些原因,git 命令下载和更新不能正常工作,也可以手工创建和更新该目录。
在不同目录,执行 go 命令,使用不同的 go 版本:
https://github.com/fsgo/bin-auto-switcher