21 个版本 (7 个重大更新)
0.9.3 | 2024 年 8 月 15 日 |
---|---|
0.9.2 | 2024 年 6 月 6 日 |
0.8.2 | 2024 年 5 月 27 日 |
0.7.1 | 2024 年 3 月 27 日 |
0.2.5 | 2023 年 11 月 30 日 |
#1607 在 开发工具
134 每月下载量
用于 2 个软件包
46KB
987 行
goup
goup
是一个用 Rust 编写的优雅的 Go 版本管理器。
goup
旨在实现上述功能,并深受 Rustup、golang/dl、goup、goenv、gvm 和 getgo 的启发。
注意: 请注意,goup-rs
仍在积极开发中,因此在使用 v1.0.0 之前,不能保证完全向后兼容。
功能
- 最小依赖,仅依赖于
git
。我们可能在将来移除这个依赖。 - 多平台兼容(Linux、macOS & Windows)。
- 使用
goup install/remove [TOOLCHAIN]
安装/移除 Go 版本。 - 支持使用
goup install <nightly|tip|gotip>
从源安装 Go。 - 列出本地安装的版本。
- 在多个安装的版本之间切换。
- 搜索可用的 Go 版本。
- 管理本地缓存文件(例如
*.tar.gz
、*.tar.gz.sha256
)。 - 升级
goup
本身。 - 友好的提示。
- 应该相当快速。
安装
Cargo
或者,您也可以使用 cargo
安装。
cargo install goup-rs
或者
cargo install goup-rs --git https://github.com/thinkgos/goup-rs
- (仅限 Linux/MacOS) 运行
goup init
,在$HOME/.goup/env
获取 Go Shell 启动脚本。 - (仅限Linux/MacOS)将Go的二进制目录添加到您的shell启动脚本中:
echo '. "$HOME/.goup/env"' >> ~/.bashrc
或echo '. "$HOME/.goup/env"' >> ~/.zshenv
手动(仅限Linux/MacOS)
如果您想手动安装,以下是步骤:
- 从 发布页面 下载最新的
goup
- 将
goup
可执行文件移动到您的PATH
并使其可执行:mv GOUP_BIN /usr/local/bin/goup && chmod +x /usr/local/bin/goup
- 运行
goup init
,在$HOME/.goup/env
获取shell启动脚本。 - 将Go的二进制目录添加到您的shell启动脚本中:
echo '. "$HOME/.goup/env"' >> ~/.bashrc
或echo '. "$HOME/.goup/env"' >> ~/.zshenv
手动(仅限Windows)
MSI安装程序
从 发布页面 部分使用MSI安装程序安装适用于您系统的最新版本。
二进制压缩文件
- 从 发布页面 下载Windows版本的二进制压缩文件,然后解压缩。
- 将
goup.exe
移动到$YOUR_PATH
。 - 将
$YOUR_PATH
添加到Windows环境。
快速开始
$ goup install
[2024-01-30T00:38:48Z INFO ] Installing go1.21.10 ...
[2024-01-30T00:38:48Z INFO ] Unpacking /home/thinkgo/.goup/go1.21.10/go1.21.10.linux-amd64.tar.gz ...
[2024-01-30T00:38:48Z INFO ] go1.21.10 installed in /home/thinkgo/.goup/go1.21.10
[2024-01-30T00:38:48Z INFO ] Default Go is set to 'go1.21.10'
$ goup list
| ACTIVE | VERSION |
|---------|---------|
| * | 1.21.10 |
$ go env GOROOT
/home/thinkgo/.goup/current
$ go version
go version go1.21.10 linux/amd64
$ GOUP_GO_HOST=https://golang.google.cn goup install =1.21.10
用法
列出所有可用的Go版本
goup search [FILTER]
,[FILTER]
可以是以下值之一:'stable'、'unstable'、'beta'或任何正则表达式字符串。
$ goup search
1
...
1.21rc4
1.22rc1
$ goup search stable
1
...
1.21.4
1.21.5
1.21.10
列出位于 $HOME/.goup
的所有已安装Go版本。
$ goup list
+--------+---------+
| Active | Version |
+--------+---------+
| | 1.21.10 |
+--------+---------+
| * | 1.22.3 |
+--------+---------+
| | tip |
+--------+---------+
安装指定的Go版本
goup install/update [TOOLCHAIN]
,[TOOLCHAIN]
可以取以下值:'stable'(默认),'nightly'(代表 'tip','gotip'),'unstable','beta' 或 '1.21.4',--dry
标志表示只安装版本,但不切换。
[TOOLCHAIN]
你可以使用 semver
语法来匹配版本
- 精确匹配(
=
):允许更新到与指定版本完全相同的最新版本,因此=1.21.4
表示与版本1.21.4
完全匹配。 - 大于(
>
):允许更新到小于或等于指定版本的最新版本,因此>1.21.4
表示大于1.21.4
。 - 大于等于(
>=
):允许更新到小于或等于指定版本的最新版本,因此<1.21.4
表示大于等于1.21.4
。 - 小于(
<
):允许更新到小于或等于指定版本的最新版本,因此<1.21.4
表示小于1.21.4
。 - 小于等于(
<=
):允许更新到小于或等于指定版本的最新版本,因此<1.21.4
表示小于等于1.21.4
。 - 波浪号(~)匹配(
~
):允许更新到最新版本,该版本不更改主版本号和次版本号,因此~1.21.4
表示大于等于1.21.4
,但小于1.22.0
。 - caret(
^
): 允许更新到不改变主版本的最新版本,因此^1.21.4
表示版本必须大于或等于1.21.4
,但小于2.0.0
。 - 通配符(
*
):运算符表示任意版本。它通常用于允许所有版本号匹配。1.21.*
匹配所有1.21.x
版本。1.*.*
匹配所有1.x.x
版本。
$ goup install 1.21.*
[2024-01-30T00:38:48Z INFO ] Installing go1.21.10 ...
[2024-01-30T00:38:48Z INFO ] Unpacking /home/thinkgo/.goup/go1.21.10/go1.21.10.linux-amd64.tar.gz ...
[2024-01-30T00:38:48Z INFO ] go1.21.10 installed in /home/thinkgo/.goup/go1.21.10
[2024-01-30T00:38:48Z INFO ] Default Go is set to 'go1.21.10'
$ goup install =1.21.4 --dry
[2024-01-30T00:38:48Z INFO ] Installing go1.21.4 ...
[2024-01-30T00:38:48Z INFO ] Unpacking /home/thinkgo/.goup/go1.21.4/go1.21.4.linux-amd64.tar.gz ...
[2024-01-30T00:38:48Z INFO ] go1.21.10 installed in /home/thinkgo/.goup/go1.21.4
切换到选定的Go版本
goup use/set [VERSION]
,切换到选定的Go版本。
$ goup use
? Select a version ›
1.21.5
❯ 1.21.10
tip
[2024-01-30T00:38:48Z INFO ] Default Go is set to 'go1.21.10'
删除指定的Go版本列表
goup remove/rm [VERSION]...
删除指定的Go版本列表。如果没有提供版本,将显示提示以选择多个已安装的Go版本
$ goup rm
? Select multiple version ›
✔ 1.21.5
⬚ 1.21.10
⬚ tip
✔ Select multiple version · 1.21.5
管理缓存归档文件
$ goup cache show --contain-sha256
go1.21.10.linux-amd64.tar.gz
go1.21.10.linux-amd64.tar.gz.sha256
$ goup cache clean
✔ Do you want to clean cache file? · yes
修改goup安装
$ goup self update
Checking target-arch... x86_64-unknown-linux-gnu
Checking current version... v0.9.0
Checking latest released version... v0.9.0
[2024-01-30T00:38:48Z INFO ] Update status: `v0.9.0`!
环境
$ goup env
+---------------------------+--------------------------------+---------------------------------------------------------------------------------+
| Key | Value | Explain |
+---------------------------+--------------------------------+---------------------------------------------------------------------------------+
| GOUP_GO_HOST | https://golang.google.cn | Get upstream latest/all go version, use by 'install'/'search' |
+---------------------------+--------------------------------+---------------------------------------------------------------------------------+
| GOUP_GO_DOWNLOAD_BASE_URL | https://dl.google.com/go | Download go archive file base url, use by 'install' |
+---------------------------+--------------------------------+---------------------------------------------------------------------------------+
| GOUP_GO_SOURCE_GIT_URL | https://github.com/golang/go | Upstream source git url and get upstream go versions, use by 'install'/'search' |
+---------------------------+--------------------------------+---------------------------------------------------------------------------------+
| GOUP_GO_SOURCE_GIT_URL | https://go.googlesource.com/go | Upstream source git url, use by 'install' the gotip |
+---------------------------+--------------------------------+---------------------------------------------------------------------------------+
自动补全
goup completion <SHELL>
生成指定shell的自动补全脚本。 <SHELL>
可能的值: bash
, elvish
, fish
, powershell
, zsh
。
goup completion zsh > _goup
更多信息
goup -h
获取更多信息
工作原理
goup completion <SHELL>
生成指定shell的自动补全脚本。goup [help]
打印此消息或给定子命令的帮助信息。goup install/update [TOOLCHAIN]
下载指定的Go版本到$HOME/.goup/go<VERSION|tip>/go
并将其符号链接到$HOME/.goup/current
。goup use/set [VERSION]
切换到选定的Go版本。goup ls/list/show
列出位于$HOME/.goup
的所有已安装Go版本。goup remove/rm [VERSION]...
删除指定的Go版本列表。goup search [FILTER]
列出所有可用的 Go 版本。goup cache [COMMAND]
管理缓存归档文件。goup self <COMMAND>
修改 goup 安装。goup init
将所有必要的环境变量和值写入$HOME/.goup/env
。goup env
显示指定的 goup 环境变量和值。
如何调试
默认日志级别是 Info
。您可以使用 goup -v <subcommand>
或 goup -vv <subcommand>
使用 Debug
或 Trace
级别。
常见问题解答
- 从源代码编译和安装失败?
所需的 Go 最小版本取决于目标 Go 版本,更多信息请参阅 源安装说明
许可
依赖关系
~6–23MB
~312K SLoC