hmhv

asdfを使ってみる

2022-04-16

昨日新しいMacにrubyのインストールのためchrubyを利用したことをiOS開発環境作成のためのRuby設定で書いたけどnodejspythonもまた個別のバージョン管理ツールを導入しようとすると面倒くさくなり、以前聞いたことのある一つのツールで色々な言語のバージョン管理ができる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.22.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などのツールのバージョン管理もできるらしい、

Tags: asdf