🧐

goのバージョン管理 asdf golang はGOROOTも切替えてくれる

2024/01/21に公開

goのバージョンを切替えるには、Homebrew、goenv、go公式のバージョン切替を使う方法などがありますが、

asdfが良いよ。

と教えてもらったので導入してみました。この類のツールはトレンドが変わるので時々見直したいところでした。

懸念点としては、バージョンを切替える度にパスやコマンドが変化すると、VScodeで使う際に設定で不都合がでること。setting.jsonにgo.gorootを設定してパスを決め打ちするのは、スマートとは言えません。

結論から書くと、asdf global コマンドでバージョンを切替えると GOROOTが動的に決定され、setting.jsonのgo root設定も不要で、VScodeで問題なく動作しました。

環境

asdfインストール

https://asdf-vm.com/guide/getting-started.html
"Install asdf" まで完了させます。

golang pluginインストール

asdf plugin add golang

plugin自体はここでホストされているようでした。
https://github.com/asdf-community/asdf-golang

利用可能なバージョン確認

asdf list all golang

go 1.21を入れてみます

asdf install golang 1.21.6

go version を確認

go version
> go version go1.21.6 darwin/arm64

go env GOROOT を確認

go env GOROOT
> /Users/[yourname]/.asdf/installs/golang/1.21.6/go

設定されていました。

go 1.19を入れてみます

asdf install golang 1.19.13

グローバルを切替える(もしかするとlocalだとGOROOT設定されないかも?)

asdf global golang 1.19.13

go versionを確認

go version
> go version 1.19.13 darwin/arm64

go env GOROOTを確認

go env GOROOT
> /Users/[yourname]/.asdf/installs/golang/1.19.13/go

まとめ

VScodeを起動したところ、GOROOTが設定されていない "Failed to find the go binary in either GOROOT()..." エラーは出ておらず、サジェストなども効いていました。

asdfの使い方補足

特定のマイナーバージョンの最新版に切り替える

asdf global golang latest:[version]

パッチバージョンまで考えなくていいので楽。

golang pluginで指定バージョンをアンインストール

asdf uninstall golang [version]

golang pluginをアンインストール

asdf plugin remove golang

一通り各バージョンをアンインストールしたあとにした方が良さそうですね。

Discussion