昨日新しいMacにrubyのインストールのためchrubyを利用したことをiOS開発環境作成のためのRuby設定で書いたけどnodejsやpythonもまた個別のバージョン管理ツールを導入しようとすると面倒くさくなり、以前聞いたことのある一つのツールで色々な言語のバージョン管理ができるanyenv調べてみると今はasdfの方がもっと使われてるっぽいのでasdfを使ってruby, nodejs, pythonを入れてみたのでメモ。
asdfをインストール
いつものbrewで行う。
brew install asdf
asdfのインストール後の初期設定
echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc
asdfは基本.tool-versionsというファイルでバージョンを指定するけど、設定によっては.ruby-versionや.node-versionなどのファイルからも可能なようなのでその設定もやっておく
echo "legacy_version_file = yes" >> $HOME/.asdfrc
rubyをインストール
asdfはインストールしたい言語がある場合、その言語のプラグインをインストールする必要があるのでruby用プラグインasdf-rubyをまずインストールする
各言語のプラグインのインストールには依存関係があって先にそれらのインストールが必要な場合があるのでREADMEの確認が必要で
asdf-rubyの場合は以下が必要>brew install openssl@1.1 readline >export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1)"
asdf plugin add ruby
その後rubyのバージョン3.1.2と2.7.6をインストール
asdf install ruby 3.1.2
asdf install ruby 2.7.6
グローバルで利用するrubyのバージョンを3.1.2で指定
asdf global ruby 3.1.2
各フォルダで利用するrubyのバージョンはlocalを利用して指定
asdf local ruby 2.7.6
nodejsをインストール
nodejsもまずnodejs用プラグインasdf-nodejsをインストールする
asdf plugin add nodejs
その後nodejsのバージョン16.4.2をインストール
asdf install nodejs 16.4.2
グローバルで利用するnodejsのバージョンを16.4.2で指定
asdf global nodejs 16.4.2
pythonをインストール
pythonもまずpython用プラグインasdf-pythonをインストールする
asdf plugin add python
その後pythonのバージョン3.10.4をインストール
asdf install python 3.10.4
グローバルで利用するpythonのバージョンを3.10.4で指定
asdf global nodejs 3.10.4
グローバル設定を確認
ホームフォルダの.tool-versionsを確認すると各言語のバージョンが確認できる
cat ~/.tool-versions
ruby 3.1.2
python 3.10.4
nodejs 16.4.2
また各言語のバージョンを直接確認
ruby -v
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-darwin21]
node -v
v16.4.2
python -V
Python 3.10.4
asdfの他の使用例
利用可能なプラグインのリストを確認
asdf plugin list all
数が多いので確認したい言語がある場合は
grepで絞るasdf plugin list all | grep ruby ruby *https://github.com/asdf-vm/asdf-ruby.git
インストール済みプラグインの更新
asdf plugin update --all
インストール済み言語のバージョンの確認
asdf list
nodejs
16.4.2
python
3.10.4
ruby
2.7.6
3.1.2
インストール済み言語の特定バージョンの削除
asdf uninstall ruby 3.1.2
最後にasdfは言語のみではなくawscliなどのツールのバージョン管理もできるらしい、