はじめに
この記事ではasdfをインストールするところから、実際にGoのバージョンを切り替えるまでの手順をまとめています。
最後まで読めば、簡単に手元のGoのバージョンを切り替えられるようになるはずです。
※本記事はIntel Macで動作確認済みです。
asdfを使ってGoのバージョンを切り替える手順
以下の手順で進めます。
-
homebrewでasdfをインストール
-
既存Go(公式インストーラ版)のアンインストール(もしあれば)
-
Zshの初期化スクリプトでasdfを有効化
-
asdfでGoをインストール
-
バージョンを切り替える
順番に見ていきます。
1. homebrewでasdfをインストール
まずはasdfをインストールします。
$ brew install asdf
インストール後、次のようにバージョンを確認できればOKです。
$ asdf version
0.16.5
2. 既存Go(公式インストーラ版)のアンインストール(もしあれば)
$ which go
/usr/local/go/bin/go
このように/usr/local/go/bin/go
が表示される場合、すでに別の手段でGoをインストールしていると考えられます。
※Appleシリコンだと/usr/local
ではなく/opt/homebrew
だと思われる。
pkgutil
でパッケージIDが確認できます。
$ pkgutil --pkgs | grep -i golang
org.golang.go
そちらが優先されてしまうことを防ぐため、アンインストールしましょう。
$ sudo rm -rf /usr/local/go
Password:
$ sudo pkgutil --forget org.golang.go
Forgot package 'org.golang.go' on '/'.
再びwhich go
を実行しgo not found
と表示されればアンインストールできています。
$ which go
go not found
3. Zshの初期化スクリプトでasdfを有効化
asdfを使うにはシェル起動時に初期化スクリプトを読み込む必要があります。
.zshrc
に追記・反映します。
$ echo '. /usr/local/opt/asdf/libexec/asdf.sh' >> ~/.zshrc
source ~/.zshrc
ドットとスクリプトパスの間にスペースを空ける必要がある点に注意しましょう。
4. asdfでGoをインストール
asdfはプラグイン制です。
Goを扱うためには次のコマンドでプラグインを追加します。
$ asdf plugin add golang
asdf plugin list
を実行してgolang
の表示が確認できれば問題ないです。
$ asdf plugin list
golang
続いてインストール可能なGoのバージョンを一覧で確認します。
$ asdf list all golang
1
1.2.2
1.3
1.3beta1
(省略)
1.12.15
1.12.16
1.12.17
1.13
1.13beta1
(省略)
1.23.6
1.23.7
1.24.0
1.24rc1
1.24rc2
1.24rc3
1.24.1
今回は例として最新の1.24.1を使います。
asdf install golang 1.24.1
でインストール可能です。
$ asdf install golang 1.24.1
Platform 'darwin' supported!
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 76.2M 100 76.2M 0 0 55.8M 0 0:00:01 0:00:01 --:--:-- 55.8M
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 64 100 64 0 0 156 0 --:--:-- --:--:-- --:--:-- 156
verifying checksum
/Users/inouekazuya/.asdf/downloads/golang/1.24.1/archive.tar.gz: OK
checksum verified
次のようにインストールできていることを確認できればOKです。
$ asdf list golang
*1.24.1
最後にインストールしたGoをasdf set
コマンドでセットしましょう。
「設定をどこに書くか(ホーム or プロジェクト」によって、グローバル・ローカルを切り替えます。
グローバルに設定する場合
ホームディレクトリに移動し、asdf set golang 1.24.1
を実行します。
$ cd ~
$ asdf set golang 1.24.1
すると~/.tool-versions
が作成・更新され、全ディレクトリでGo1.24.1
が使われるようになります。
ローカルに設定する場合
たとえば~/go-sample
というディレクトリに移動して実行します。
$ cd ~/go-sample
$ asdf set golang 1.24.1
すると~/go-sample/.tool-versions
が作成・更新され、このディレクトリ配下だけGo1.24.1が使われるようになります。
グローバルよりもローカルの優先度の方が高い点に注意です。
5. バージョンを切り替える
最後にバージョンを切り替える場合の操作です。
今回はGo1.13にさかのぼって動作確認したいケースを想定します。
と言っても流れは同じです。
以下のコマンドを順に実行しましょう。
$ asdf install golang 1.13
$ asdf list golang
1.13
*1.24.1
$ asdf set golang 1.13
$ asdf list golang
*1.13
1.24.1
*
が現在のバージョンです。
*1.13
となっていれば、バージョンの切り替えができています。
まとめ
この記事ではasdfを使ってGoのバージョンを切り替える手順をまとめました。
バージョン間の差異を確認したりする場面で有効かなと思います。
参考になりましたら幸いです。