昨日新しいMacにrubyのインストールのためchrubyを利用したことをiOS開発環境作成のためのRuby設定で書いたけどnodejspythonもまた個別のバージョン管理ツールを導入しようとすると面倒くさくなり、以前聞いたことのある一つのツールで色々な言語のバージョン管理ができるanyenv調べてみると今はasdfの方がもっと使われてるっぽいのでasdfを使ってruby, nodejs, pythonを入れてみたのでメモ。

asdfをインストール

いつものbrewで行う。

1
brew install asdf

asdfのインストール後の初期設定

1
echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc

asdfは基本.tool-versionsというファイルでバージョンを指定するけど、設定によっては.ruby-version.node-versionなどのファイルからも可能なようなのでその設定もやっておく

1
echo "legacy_version_file = yes" >> $HOME/.asdfrc

rubyをインストール

asdfはインストールしたい言語がある場合、その言語のプラグインをインストールする必要があるのでruby用プラグインasdf-rubyをまずインストールする

各言語のプラグインのインストールには依存関係があって先にそれらのインストールが必要な場合があるのでREADMEの確認が必要でasdf-rubyの場合は以下が必要

1
2
>brew install openssl@1.1 readline
>export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1)"
1
asdf plugin add ruby

その後rubyのバージョン3.1.22.7.6をインストール

1
2
asdf install ruby 3.1.2
asdf install ruby 2.7.6

グローバルで利用するrubyのバージョンを3.1.2で指定

1
asdf global ruby 3.1.2

各フォルダで利用するrubyのバージョンはlocalを利用して指定

1
asdf local ruby 2.7.6

nodejsをインストール

nodejsもまずnodejs用プラグインasdf-nodejsをインストールする

1
asdf plugin add nodejs

その後nodejsのバージョン16.4.2をインストール

1
asdf install nodejs 16.4.2

グローバルで利用するnodejsのバージョンを16.4.2で指定

1
asdf global nodejs 16.4.2

pythonをインストール

pythonもまずpython用プラグインasdf-pythonをインストールする

1
asdf plugin add python

その後pythonのバージョン3.10.4をインストール

1
asdf install python 3.10.4

グローバルで利用するpythonのバージョンを3.10.4で指定

1
asdf global nodejs 3.10.4

グローバル設定を確認

ホームフォルダの.tool-versionsを確認すると各言語のバージョンが確認できる

1
2
3
4
cat ~/.tool-versions
ruby 3.1.2
python 3.10.4
nodejs 16.4.2

また各言語のバージョンを直接確認

1
2
3
4
5
6
7
8
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の他の使用例

利用可能なプラグインのリストを確認

1
asdf plugin list all

数が多いので確認したい言語がある場合はgrepで絞る

1
2
asdf plugin list all | grep ruby
ruby *https://github.com/asdf-vm/asdf-ruby.git

インストール済みプラグインの更新

1
asdf plugin update --all

インストール済み言語のバージョンの確認

1
2
3
4
5
6
7
8
asdf list
nodejs
16.4.2
python
3.10.4
ruby
2.7.6
3.1.2

インストール済み言語の特定バージョンの削除

1
asdf uninstall ruby 3.1.2

最後にasdfは言語のみではなくawscliなどのツールのバージョン管理もできるらしい、