初めに
複数の言語やツールのバージョンを一元管理できるバージョンマネージャー「asdf」をWSLのUbuntu環境に導入しました。
本記事はWSLのUbuntu環境の構築とHomeBrewのインストールが前提となっています。 rms-099.hatenablog.jp rms-099.hatenablog.jp
asdfとは
asdfはGolang・Java・Node.js・Pythonなど様々な言語やツールのバージョンをプラグイン形式で一元管理できるバージョンマネージャーです。
バージョンマネージャーは次のように各言語ごとに用意されていますが、個々にインストールするのは勿論のこと各々の環境変数をrcファイルに定義したり各マネージャーごとにサブコマンドが異なったりするので、その点においてasdfは便利です。
- Golang ⇒ g, goenv
- Java ⇒ javm, jenv
- Node.js ⇒ n, nodebrew, nodenv, nvm
- Python ⇒ pyenv
実はv0.16.0以降で大規模な刷新が行われ、それまでのBashスクリプトの集合体からGo言語でコンパイルされた単一バイナリへと生まれ変わったようです。
インストール
HomebrewからインストールするのがWSL環境では最も簡単です。
brew install asdf
~/.zshrcへの設定
旧バージョン(v0.15.0以前)ではBashスクリプトをsourceする以下の記述が必要でした。
# 旧バージョンの書き方(v0.15.0以前) . "$(brew --prefix asdf)/libexec/asdf.sh"
v0.16.0以降はasdf本体がシェルスクリプトからバイナリに変わったため、上記の書き方は使えません。代わりにshimsディレクトリをPATHに追加する形式になりました。
# 新バージョンの書き方(v0.16.0以降)
export PATH="${ASDF_DATA_DIR:-$HOME/.asdf}/shims:$PATH"
追記後、設定を反映させます。
source ~/.zshrc
基本的な使い方
プラグインの追加
次のコマンドでGo言語のプラグインをインストールできます。
asdf plugin add golang
インストール可能なバージョンの一覧表示
asdf list all golang
指定バージョンのインストール
asdf install golang 1.24.0
バージョンの設定
旧バージョンでは global や local といったサブコマンドを使っていましたが、v0.16.0以降は set に統一されたようです。
# 旧バージョンの書き方(v0.15.0以前) asdf global golang 1.24.0 asdf local golang 1.24.0 # 新バージョンの書き方(v0.16.0以降) asdf set golang 1.24.0 # カレントディレクトリの.tool-versionsに書き込む asdf set -u golang 1.24.0 # グローバル設定(~/.tool-versionsに書き込む)
現在のバージョン確認
asdf current
WSL外からGoのビルドを実行する
WSL2ではPowerShellやコマンドプロンプトからwslコマンドを介してWSL内のコマンドを直接呼び出せます。
wsl go build ./...
Goプロジェクトのルートディレクトリでこのコマンドを実行すると、WSL内にインストールされたGoでビルドが行われます。
Windows側のパスをWSL内に渡す場合はwslpathコマンドでパスを変換できます。
wsl go build $(wsl wslpath -u 'C:\Users\username\project')
複数のディストリビューションをインストールしている場合は-dオプションで対象を指定できます。
wsl -d Ubuntu go build ./...
