サヨナラanyenv。コンニチハasdf。
今更ながらMac買い換えた勢いで、anyenvを卒業してasdfに乗り換えてみたのでメモ。お仕事用のUbuntu(WSL)も一気に乗り換え。
asdfの良い点
- 使い方が統一されてる。anyenvは*envの使い方をそれぞれ覚えないといけないが、毎回忘れてググるハメに…。
- プラグインがいっぱいある(aws-sam-cliとか、kubectlとか)&その気になれば自分でも簡単に作れそう。
-
.tool-versions
に書いておけばasdf install
一発で簡単に同じ構成を再現できる。チームで共有すると便利そう。
asdfのインストール
macOS
-
公式ガイドには"We highly recommend using the official git method."と書いてあるがHomebrewで入れてみた。
-
自分はzshユーザなので、公式サイトでいうZSH & Homebrewパターン。
-
補完用の関数のパスとかがgitで入れた場合と違うので、Ubuntuとシェルの設定を共通にしたい場合はgitで入れるのが無難かもしれない。
brew install coreutils curl git #依存物 brew install asdf
Ubuntu (WSL)
-
Gitでインストール。タグは公式ガイドか、GitHubを見て最新版を使う。
apt install curl git #依存物 git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.12.0
.zshrc
-
頑張ればもうちょい綺麗にかけるかもしれないが、素直にmacOSとそれ以外で分岐。
## Load asdf case "${OSTYPE}" in darwin*) [ -f /opt/homebrew/opt/asdf/libexec/asdf.sh ] && source /opt/homebrew/opt/asdf/libexec/asdf.sh ;; *) [ -f ~/.asdf/asdf.sh ] && source ~/.asdf/asdf.sh esac
## Load asdf completions case "${OSTYPE}" in darwin*) [ -d /opt/homebrew/opt/asdf/share/zsh/site-functions ] && fpath=( /opt/homebrew/opt/asdf/share/zsh/site-functions $fpath ) ;; *) [ -d ${ASDF_DIR}/completions ] && fpath=( ${ASDF_DIR}/completions $fpath ) esac autoload -Uz compinit && compinit
Node.jsのインストール
-
Node.jsのプラグインは公式が提供している。
-
公式ガイドにある通りpost-installフックがある場合があるので、プラグインの依存物を入れる。
-
ちなみに、先にプラグイン入れちゃったけど問題なく動いている模様。
brew install gpg gawk # macOS apt install dirmngr gpg curl gawk # Ubuntu
-
nodejsプラグインの追加
-
git-urlを指定して追加するのが推奨らしいが、未指定だと
asdf plugin list all
で確認できるurlが使用される模様。% asdf plugin add nodejs ... # Recommendation Prefer the longer git-url method as it is independent of the short-name repo. ...
-
-
バージョンを指定してインストール
-
とりあえず最新版。stableとか指定できたら良いんだが…。
asdf install nodejs latest
-
-
バージョン指定
-
Global
asdf global nodejs latest # $HOME/.tool-versionsに記録される
-
Local
asdf local nodejs latest # $PWD/.tool-versionsに記録される
-
Pythonのインストール
-
Pythonプラグインの追加
-
danhper/asdf-pythonがデフォルトのようだけど、実際にアクセスするとasdf-community/asdf-pythonにリダイレクトされる。
asdf plugin add python
-
-
バージョンを指定してインストール
asdf install python 3.13.0
-
バージョン指定
asdf global python 3.13.0
Golangのインストール
-
依存物のインストール。
brew install coreutils # macOS apt install coreutils curl # Ubuntu
-
golangプラグインの追加
-
Golangのプラグインは公式コミュニティが提供している。
asdf plugin add golang https://github.com/asdf-community/asdf-golang.git
-
-
インストール&バージョン指定
asdf install golang latest asdf global golang latest
Javaのインストール
-
Javaプラグインの追加
-
halcyon/asdf-javaがインストールされる。
-
公式ではなさそうだけど公式ドキュメントの例に使われていたりもするので信頼できそう(スターも500近い)。
asdf plugin add java
-
-
バージョンを指定してインストール
asdf install java corretto-21.0.5.11.1
-
バージョン指定
asdf global java corretto-21.0.5.11.1
その他
-
全プラグインの指定中のバージョンを確認
asdf current
-
全プラグインのインストール済みバージョンを確認
asdf list
-
各プラグインの利用可能なバージョンを表示
asdf list all <plugin-name>
-
特定バージョンのアンインストール
asdf unistall <plugin-name> <version>
-
rehash
asdf reshim <plugin-name>
-
asdfの全プラグインのアップデート
asdf plugin update --all
Discussion