2024年3月追記
asdfのプラグインと互換性を持ち、同一のサブコマンド体系を持つ後発プロジェクトのmise
(旧名rtx
)が登場しており、筆者は現在こちらをおすすめしています。使用感も大きく変わりません。
バージョン切替をshim scriptではなく環境変数の動的書き換えによって管理する方式となっており、direnv
と組み合わせて利用することでエディターとの連携も安定して実現できます。
愛用者も多いとは思いますがasdf
を使った言語環境構築やバージョン切り替えが非常に便利です。
CommonLispのASDFプロジェクトとの関係は僕にはわかりませんが、何がしかあるのかもしれませんし、ないのかもしれません。
強み
rvm/rbenvやnvm等のバージョンマネージャを1コマンドに統一できる 、というのが大きいです。その辺りの開発動機はポエムになっています。
local
でインストールすれば.tool-versions
ファイルが生成されるので、それをGitに入れればプロジェクトで共有もできます。
Pluginを作ることで、手頃なバージョンマネージャのない言語に対応できるのもグッド。
asdf
は左手で容易に入力できるのも素晴らしいですね。
準備
OSX準拠です。基本的にはREADME通り。
$ brew install automake autoconf openssl libyaml readline libxslt libtool unixodbc # 準備。大概入ってそうですが。
$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf
$ echo '. $HOME/.asdf/asdf.sh' >> ~/.bashrc # この2行は各自の環境合わせで。
$ echo '. $HOME/.asdf/completions/asdf.bash' >> ~/.bashrc
$ . ~/.bashrc
Erlang/Elixir
更新も早いので積極的に追従していきたいですね。公式でも紹介されています。
$ asdf plugin-add erlang https://github.com/asdf-vm/asdf-erlang.git
$ asdf plugin-add elixir https://github.com/asdf-vm/asdf-elixir.git
$ asdf install erlang 18.3
(数分かかる)
$ asdf global erlang 18.3
$ asdf install elixir 1.2.5
(結構すぐ終わる)
$ asdf global elixir 1.2.5
Erlangインストールの前にopensslをインストールするのを忘れていると、:ssl
モジュールがインストールされません。Hexがこれに依存しているので実質的に必須です。
brew経由でインストールしていれば、自動的にopensslのパスを解決して:ssl
をインストールしてくれます。
手動で指定する場合、
$ ERLANG_EXTRA_CONFIGURE_OPTIONS="--with-ssl=/usr/local/opt/openssl/" asdf install erlang 18.3
このようにオプションを渡します。
node.js
nodeとバージョン管理は不可分ですね。。
$ asdf plugin-add nodejs https://github.com/asdf-vm/asdf-nodejs
後はほぼ同じです。注意点として、node
ではなくnodejs
という名前でpluginを追加し、その後もnodejs
の各バージョンをインストールします。コマンド名はOSXの場合node
になります。
他
RubyとかGoもできます。Luaもある。
インストールが簡単だと新しい言語に触れようというやる気も湧いてきます。湧いてきません?