プロジェクトごとにgoのバージョンを切り替えたい時、gvm(Go Version Manager)が便利です。
ここでは「Macにgvmをインストールする方法」「gvmの使い方」を紹介します。
目次
利用準備
Macのみの準備
MacOSXの要件に記載されいている通り、以下コマンドを実行します。
xcode-select --install
brew update
brew install mercurial
gvmのインストール
シェルにzshを利用しています。
$ echo $SHELL
/bin/zsh
zshの場合、以下のようにインストールできます。
$ zsh < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
Cloning from https://github.com/moovweb/gvm.git to /Users/user_name/.gvm
No existing Go versions detected
Installed GVM v1.0.22
Please restart your terminal session or to get started right away run
`source /Users/user_name/.gvm/scripts/gvm`
~/.zshrc
の最後の行に以下行が追記されました。
[[ -s "/Users/user_name/.gvm/scripts/gvm" ]] && source "/Users/user_name/.gvm/scripts/gvm"
ターミナルを再起動すると gvmコマンド
を利用できるようになります。
$ gvm help
Usage: gvm [command]
Description:
GVM is the Go Version Manager
Commands:
version - print the gvm version number
get - gets the latest code (for debugging)
use - select a go version to use (--default to set permanently)
diff - view changes to Go root
help - display this usage text
implode - completely remove gvm
install - install go versions
uninstall - uninstall go versions
cross - install go cross compilers
linkthis - link this directory into GOPATH
list - list installed go versions
listall - list available versions
alias - manage go version aliases
pkgset - manage go packages sets
pkgenv - edit the environment for a package set
gvmの使い方
インストールできるバージョンを確認
gvm listall
でインストールできるバージョンを確認できます。
$ gvm listall
gvm gos (available)
go1
go1.0.1
go1.0.2
go1.0.3
go1.1
go1.1rc2
go1.1rc3
:
バージョン指定でgoをインストール
M1 Mac
を利用してるのですが、以下コマンドを実行したところ、ERRORになりました。
$ gvm install go1.16.15 -B
Installing go1.16.15 from binary source
ERROR: Binary Go unavailable for this platform
$
$ gvm install go1.17.5 -B
Installing go1.17.5 from binary source
ERROR: Binary Go unavailable for this platform
こちら を参考に、以下のようにしたら成功しました。
$ brew install go
==> Downloading https://ghcr.io/v2/homebrew/core/go/manifests/1.18
######################################################################## 100.0%
:
$
$ gvm install go1.16.15
Installing go1.16.15...
* Compiling...
go1.16.15 successfully installed!
$
$ gvm use go1.16.15 --default
Now using version go1.16.15
$
$ go version
go version go1.16.15 darwin/arm64
その後、brewでインストールしたgoをuninstallしても、別バージョンのgoをインストールすることができました。
$ brew uninstall go
Uninstalling /opt/homebrew/Cellar/go/1.18... (11,947 files, 595.3MB)
$
$ gvm install go1.17.5
Installing go1.17.5...
* Compiling...
go1.17.5 successfully installed!
1.16.15
と 1.17.5
をインストールしましたが、以下のように、バージョンごとにフォルダが生成されていました。
$ ls ~/.gvm/gos
go1.16.15 go1.17.5
利用するgoのバージョンを切り替え
現在、go1.16.15
を利用しています。
$ gvm list
gvm gos (installed)
=> go1.16.15
go1.17.5
$
$ echo $GOPATH
/Users/user_name/.gvm/pkgsets/go1.16.15/global
$
$ echo $GOROOT
/Users/user_name/.gvm/gos/go1.16.15
$
$ go version
go version go1.16.15 darwin/arm64
$
$ which go
/Users/user_name/.gvm/gos/go1.16.15/bin/go
1.17.5
に切り替えてみます。
$ gvm use go1.17.5 --default
Now using version go1.17.5
$
$ gvm list
gvm gos (installed)
go1.16.15
=> go1.17.5
$
$ echo $GOPATH
/Users/user_name/.gvm/pkgsets/go1.17.5/global
$
$ echo $GOROOT
/Users/user_name/.gvm/gos/go1.17.5
$
$ go version
go version go1.17.5 darwin/arm64
$
$ which go
/Users/user_name/.gvm/gos/go1.17.5/bin/go