参考
-
moovweb/gvm: Go Version Manager 多版本管理工具1 —— 本文介绍
-
voidint/g: Golang Version Manager 多版本管理工具2
使用
- 本次使用的是 gvm ,原因如下
- g 只能支持二进制版本安装,gvm 支持源码和二进制两种方式安装
- 当安装旧的版本时,由于 g 只能二进制安装,可能没有相应的二进制版本;而gvm可以下载旧版本源码,进行编译安装
1. 什么是Gvm
Go
语言版本管理器(Gvm
)是管理 Go
语言环境的开源工具。Gvm 「pkgsets」
支持安装多个版本的 Go
并管理每个项目的模块。它最初由 Josh Bussdieker
开发,Gvm
与 Ruby RVM
类似,允许你为每个项目或一组项目创建一个开发环境,分离不同的 Go
版本和包依赖关系,来提供更大的灵活性,以防不同版本造成的问题。Gvm
主要有以下几个特性:
- 管理
Go
的多个版本,包括安装、卸载和指定使用Go
的某个版本 - 查看官方所有可用的
Go
版本,同时可以查看本地已安装和默认使用的Go
版本 - 管理多个
GOPATH
,并可编辑Go
的环境变量 - 可将当前目录关联到
GOPATH
- 可以查看
GOROOT
下的文件差异 - 支持
Go
版本切换
2. 安装Gvm
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
3. Gvm功能预览
➜ 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所有版本
➜ gvm listall
gvm gos (available)
...
go1.16.12
go1.17
go1.17beta1
go1.17rc1
...
go1.17.5
go1.18beta1
release.r56
...
4.2 安装Go某版本
Usage: gvm install [version] [options]
-s, --source=SOURCE Install Go from specified source.
-n, --name=NAME Override the default name for this version.
-pb, --with-protobuf Install Go protocol buffers.
-b, --with-build-tools Install package build tools.
-B, --binary Only install from binary.
--prefer-binary Attempt a binary install, falling back to source.
-h, --help Display this message.
- 加 -B 参数,就是使用 二进制文件进行安装
- 不加 -B 参数,就是使用源码进行安装,需要编译
➜ gvm install go1.18beta1
Updating Go source...
Installing go1.18beta1...
* Compiling...
go1.18beta1 successfully installed!
4.3 使用Go某版本
# 临时生效 只在当前终端内生效,执行 go version 可看到变化
➜ gvm use go1.18beta1
# 永久生效 在本机所有终端内生效
➜ gvm use go1.18beta1 --default
4.4 查看当前使用版本
➜ gvm list
gvm gos (installed)
go1.16
=> go1.17 # 代表当前正在使用的版本
go1.18beta1
system
5. 设置全局go env
5.1 修改.bashrc
#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