gvm管理多版本golang

前言

类似 java 可以使用 sdkman 管理多版本,golang 可以用 gvm

安装

使用 gvm 管理 go 之前先安装一个版本的 go,因为 gvm 使用 go 来编译 go

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Debian/Ubuntu 安装依赖
$ sudo apt-get install curl git mercurial make binutils bison gcc build-essential

# Redhat/Centos 安装依赖
$ sudo yum install curl
$ sudo yum install git
$ sudo yum install make
$ sudo yum install bison
$ sudo yum install gcc
$ sudo yum install glibc-devel

# macOS 安装依赖
$ xcode-select --install
$ brew update
$ brew install mercurial

# 安装gvm(我用的zsh,bash的话前面自己修改)
$ zsh < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)

## 生效
source /Users/wanshao/.gvm/scripts/gvm


gvm 使用

1
2
3
4
5
6
7
8
# 显示所有可以安装的go版本
gvm listall

# 显示当前本地的版本
gvm list

# 切换版本,并且设定Wie默认
gvm use go1.12.8 --default

pkset 命令

pkgset 默认用的 global,可以创建别的 pkg 目录,这样一个 go version 也可以对不同项目的包做隔离。比如一些版本冲突问题。

1
2
3
4
gvm pkgset create introToGvm
gvm pkgset use introToGvm
Now using version go1.12.9@introToGvm
gvm pkgset list