GVM - Go Version Manager を使う

Goのバージョン管理ツール gvm が便利。

Installation

$ bash < <(curl -s https://raw.github.com/moovweb/gvm/master/binscripts/gvm-installer)

.zshrc (or .bashrc, .profile, etc...) とかに以下の設定を追加。

export PATH=$PATH:$HOME/.gvm/bin
[[ -s "$HOME/.gvm/scripts/gvm" ]] && source "$HOME/.gvm/scripts/gvm"

Usage

gvm経由でGoをインストールしてみる。 listall でインストールできるバージョン確認して install で実際にインストールする。

$ gvm listall

gvm gos (available)

   go1
   go1.0.1
   go1.0.2
   go1.0.3
   go1.1
   go1.1.1
   go1.1.2
        :
        :
   release.r60.1
   release.r60.2
   release.r60.3

$ gvm install go1.1.2
Installing go1.1.2...
 * Compiling...
$

インストールされているGoのバージョン確認

=> が今使用しているバージョン。systemはgvm経由以外でインストールしたバージョン。

$ gvm list

gvm gos (installed)

   go1.1
=> go1.1.2
   system

$

切り替え

$ gvm use go1.1

バージョン内でパッケージの切り分けも可能

$ gvm pkgset list

gvm go package sets (go1.1)

=>  global

$

はじめは global パッケージのみ存在。ここを使ってもOK。 パッケージ作成から切り替えまで。

$ gvm pkgset create foobar
$ gvm pkgset list

gvm go package sets (go1.1)

    foobar
=>  global

$ gvm pkgset use foobar
Now using version go1.1@foobar
$ gvm pkgset list

gvm go package sets (go1.1)

=>  foobar
    global

$

Zsh completion function

gvm にはbash/zsh用の補完関数がすでに用意されています。以下で導入可能です。

autoload bashcompinit
bashcompinit
source $GVM_ROOT/scripts/completion

これでうまくいくと思いきや、なんか補完が中途半端な感じになってしまうので、 zsh用の補完関数書きました。 よければ使ってみてください。

zsh_completions/_gvm at master ・ hhatto/zsh_completions

advanced PS1

使っているGoのバージョンやパッケージ名が ターミナル上で知りたくなると思うので、 環境変数PS1に値を設定するHackをしてみました

以下のような感じで表示されます。

user@host$ gvm use go1.1
Now using version go1.1
[gvm|go1.1@global]user@host$ gvm pkgset use foobar
Now using version go1.1@foobar
[gvm|go1.1@foobar]user@host$

インストールは以下で。(2013.09.25 インストール手順が誤っていたので修正)

$ curl -s https://raw.github.com/hhatto/gvm/use_ps1/binscripts/gvm-installer > gvm-installer
$ SRC_REPO="git@github.com:hhatto/gvm.git" bash gvm-installer use_ps1

これでGo開発環境は整いました。