🧐
goのバージョン管理 asdf golang はGOROOTも切替えてくれる
goのバージョンを切替えるには、Homebrew、goenv、go公式のバージョン切替を使う方法などがありますが、
「asdfが良いよ。」
と教えてもらったので導入してみました。この類のツールはトレンドが変わるので時々見直したいところでした。
懸念点としては、バージョンを切替える度にパスやコマンドが変化すると、VScodeで使う際に設定で不都合がでること。setting.jsonにgo.gorootを設定してパスを決め打ちするのは、スマートとは言えません。
結論から書くと、asdf global
コマンドでバージョンを切替えると GOROOTが動的に決定され、setting.jsonのgo root設定も不要で、VScodeで問題なく動作しました。
環境
- Visual Studio Code 1.85.2
- Mac: Darwin arm64 22.6.0
- asdf: v0.13.1
asdfインストール
"Install asdf" まで完了させます。
golang pluginインストール
asdf plugin add golang
plugin自体はここでホストされているようでした。
利用可能なバージョン確認
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