GVMとは

GVM(Github)

Go Version Managerの頭文字をとってGVM

一言で言うと

GVM provides an interface to manage Go versions.

日本語に直訳すると

GVMは、Goバージョンを管理するためのインタフェースを提供します。

インストール

AnsibleでMacの開発環境を構築する でも、gvmのインストールはされていますが、コマンドでも一発でインストール可能です。

1
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
1
2
$ gvm version
-bash: gvm: command not found

おっと、パスが通ってませんでした。。。

1
2
3
$ source ~/.gvm/scripts/gvm
$ gvm version
Go Version Manager v1.0.22 installed at /Users/XXXXX/.gvm

使い方

gvm list

インストール済のGoのバージョン一覧を表示

1
2
3
4
5
6
7
8
9
$ gvm list

gvm gos (installed)

   go1.4
   go1.7.6
   go1.8.3
=> go1.9.3
   system

バージョンを表示してみると

1
2
$ go version
go version go1.9.3 darwin/amd64

gvm listall

GVMでインストール可能なGoのバージョン一覧を表示

  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
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
$ gvm listall

gvm gos (available)

   go1
   go1.0.1
   go1.0.2
   go1.0.3
   go1.1
   go1.1.1
   go1.1.2
   go1.10beta1
   go1.10beta2
   go1.10rc1
   go1.1rc2
   go1.1rc3
   go1.2
   go1.2.1
   go1.2.2
   go1.2rc2
   go1.2rc3
   go1.2rc4
   go1.2rc5
   go1.3
   go1.3.1
   go1.3.2
   go1.3.3
   go1.3beta1
   go1.3beta2
   go1.3rc1
   go1.3rc2
   go1.4
   go1.4.1
   go1.4.2
   go1.4.3
   go1.4beta1
   go1.4rc1
   go1.4rc2
   go1.5
   go1.5.1
   go1.5.2
   go1.5.3
   go1.5.4
   go1.5beta1
   go1.5beta2
   go1.5beta3
   go1.5rc1
   go1.6
   go1.6.1
   go1.6.2
   go1.6.3
   go1.6.4
   go1.6beta1
   go1.6beta2
   go1.6rc1
   go1.6rc2
   go1.7
   go1.7.1
   go1.7.2
   go1.7.3
   go1.7.4
   go1.7.5
   go1.7.6
   go1.7beta1
   go1.7beta2
   go1.7rc1
   go1.7rc2
   go1.7rc3
   go1.7rc4
   go1.7rc5
   go1.7rc6
   go1.8
   go1.8.1
   go1.8.2
   go1.8.3
   go1.8.4
   go1.8.5
   go1.8.5rc4
   go1.8.5rc5
   go1.8.6
   go1.8beta1
   go1.8beta2
   go1.8rc1
   go1.8rc2
   go1.8rc3
   go1.9
   go1.9.1
   go1.9.2
   go1.9.3
   go1.9beta1
   go1.9beta2
   go1.9rc1
   go1.9rc2
   release.r56
   release.r57
   release.r57.1
   release.r57.2
   release.r58
   release.r58.1
   release.r58.2
   release.r59
   release.r60
   release.r60.1
   release.r60.2
   release.r60.3

gvm install

gvmでバージョン指定してGoをイントールする

試しに、go1.9.2をインストールしてみる

1
2
3
4
$ gvm install go1.9.2
Installing go1.9.2...
 * Compiling...
go1.9.2 successfully installed!
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$ gvm list

gvm gos (installed)

   go1.4
   go1.7.6
   go1.8.3
   go1.9.2  # 追加されている
=> go1.9.3
   system

gvm use

gvmで利用するGoのバージョンを変更する

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
$ gvm use go1.8.3
Now using version go1.8.3
$ go version
go version go1.8.3 darwin/amd64
$ gvm list

gvm gos (installed)

   go1.4
   go1.7.6
=> go1.8.3
   go1.9.2
   go1.9.3
   system

最後に

使い方はとても簡単ですね。

そこまでバージョン切り替えて使うシーンがどこまであるかわかりませんが、Golangで開発するなら導入しておいて損はないと思います。