GVM を使った Go の環境構築
概要
以前 Go 言語を使った開発にアサインされることがありました。
その時に GVM
を使って環境構築したら非常に簡単だったので紹介がてら残しておきます。
GVMについて
GVM は、Go Version Manager といい、Go 言語のバージョンを管理してくれるツールです。プロジェクトごとに使うバージョンが違ったり、以前にインストールしていたものが古くなったりするとバージョンを変えるのが大変です。
そんな時に、コマンドを叩くだけでバージョンの切り替えを可能にしてくれるのがこの GVM です。
こちらが公式のリポジトリです。
セットアップ
僕は macOS なので、それに合わせて必要となる依存ライブラリをインストールしていきます。
※ 他の OS についても、 README に記載があるので、そちらを参照してください。
$ sw_vers -productName
Mac OS X
$ xcode-select --install
$ brew update
# Check whether formula is installed in your machine
$ brew list | grep mercurial
# If not, please install
$ brew install mercurial
GVM のインストール
# Install Go version manager
$ bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
...
Installed GVM v1.0.22
Please restart your terminal session or to get started right away run
`source /Users/username/.gvm/scripts/gvm`
$ source ~/.gvm/scripts/gvm
# Check
$ gvm version
Go Version Manager v1.0.22 installed at /Users/username/.gvm
実際に GVM から Go をインストールする
その前にインストールのオプションを確認しておきます。
$ gvm install -h
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.
となっています。
A Note on Compiling Go 1.5+
Go 1.5+ removed the C compilers from the toolchain and replaced them with one written in Go. Obviously, this creates a bootstrapping problem if you don't already have a working Go install. In order to compile Go 1.5+, make sure Go 1.4 is installed first.
公式のリポジトリにはこのように書かれており ver1.5 以上をインストールするためにはまず ver1.4 が必要と書かれています。
しかしこの対処法としては -B
オプションを付けてソースコードからではなく、バイナリからインストールすることで回避します。
# Enter the version you want to install
$ gvm listall | grep 1.14
go1.14
go1.14beta1
go1.14rc1
go1.14.1
go1.14.2
go1.14.3
# Only install from binary
$ gvm install go1.14.3 -B
$ gvm list
gvm gos (installed)
=> go1.1 4.3
system
# Setup default version in your machine
$ gvm use go1.14.3 --default
$ go version
go version go1.14.3 darwin/amd64
ここでは --default
オプションを指定することで、シェルを再起動した際にも指定したバージョンが保持されるようにしています。
まとめ
これで GVM を使った Go の環境構築は以上です。
今後は GVM コマンドを叩くだけで、他のバージョンに簡単に変更ができるようになりました。
非常に便利なので Go を使って開発するチームやプロジェクトによって複数のバージョンを跨ぐような機会があれば導入しておくと開発が捗るのではないでしょうか。
参考にさせていただいたサイト
Discussion