【注意】最后更新于 March 4, 2023,文中内容可能已过时,请谨慎使用。
1. 什么是Gvm
Go
语言版本管理器(Gvm
)是管理 Go
语言环境的开源工具。Gvm 「pkgsets」
支持安装多个版本的 Go
并管理每个项目的模块。它最初由 Josh Bussdieker
开发,Gvm
与 Ruby RVM
类似,允许你为每个项目或一组项目创建一个开发环境,分离不同的 Go
版本和包依赖关系,来提供更大的灵活性,以防不同版本造成的问题。Gvm
主要有以下几个特性:
- 管理
Go
的多个版本,包括安装、卸载和指定使用 Go
的某个版本
- 查看官方所有可用的
Go
版本,同时可以查看本地已安装和默认使用的 Go
版本
- 管理多个
GOPATH
,并可编辑 Go
的环境变量
- 可将当前目录关联到
GOPATH
- 可以查看
GOROOT
下的文件差异
- 支持
Go
版本切换
gvm Star6.8k 源码地址:https://github.com/moovweb/gvm
2. 安装Gvm
1
|
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
|
3. Gvm功能预览
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
➜ gvm
Usage: gvm [command]
Description:
Gvm is the Go Version Manager
Commands:
# 打印 Gvm 的版本
version - print the gvm version number
# 获取 Gvm 最新的代码
get - gets the latest code (for debugging)
# 使用某个go版本,临时生效,加上--default永久生效
use - select a go version to use (--default to set permanently)
diff - view changes to Go root
help - display this usage text
# 彻底删除gvm和安装的所有 go 版本和包
implode - completely remove gvm
# 安装某个go的版本
install - install go versions
# 卸载某个 go 版本
uninstall - uninstall go versions
# 安装交叉编译器,gvm cross [os] [arch],os = linux/darwin/windows,arch = amd64/386/arm
cross - install go cross compilers
linkthis - link this directory into GOPATH
# 列出安装的 Go 版本
list - list installed go versions
# 列出可用的 Go 版本,使用 --all,列出所有的 tags
listall - list available versions
# 管理 Go 版本别名
alias - manage go version aliases
- # gvm alias list ,列出所有别名
- # gvm alias create [alias name] [go version name],创建别名
- # gvm alias delete [alias name] ,删除别名
# 管理 GOPATH 环境变量, 会在 ~/.gvm/environments 目录下创建相应的文件
pkgset - manage go packages sets
# 编辑 pkgset 的环境变量
pkgenv - edit the environment for a package set
|
4. 使用Gvm
4.1 查看Go所有版本
1
2
3
4
5
6
7
8
9
10
11
12
|
➜ gvm listall
gvm gos (available)
...
go1.16.12
go1.17
go1.17beta1
go1.17rc1
...
go1.17.5
go1.18beta1
release.r56
...
|
4.2 安装Go某版本
1
2
3
4
5
|
➜ gvm install go1.18beta1
Updating Go source...
Installing go1.18beta1...
* Compiling...
go1.18beta1 successfully installed!
|
4.3 使用Go某版本
1
2
3
4
|
# 临时生效
➜ gvm use go1.18beta1
# 永久生效
➜ gvm use go1.18beta1 --default
|
4.4 查看当前使用版本
1
2
3
4
5
6
|
➜ gvm list
gvm gos (installed)
go1.16
=> go1.17 # 代表当前正在使用的版本
go1.18beta1
system
|
5. 设置全局go env
5.1 修改.bashrc
1
2
3
4
5
6
7
8
9
10
|
#G OPATH
export GOPATH=/Users/xxx/xx
# GOBIN
export GOBIN=$GOPATH/bin
# GoEnv
export GOENV=$GOPATH/env
# 代理
export GOPROXY=https://goproxy.cn/,https://mirrors.aliyun.com/goproxy/,direct
# go module
export GO111MODULE=auto
|