バージョン
バージョンのインストール
asdf install <name> <version>
# asdf install erlang 17.3プラグインが、ソースコードからのダウンロード・コンパイルをサポートしている場合、ref:fooの形式(fooは特定のブランチ、タグ、またはコミット)でバージョンを指定できます。アンインストールするときも、同じ名前とバージョンを指定する必要があります。
最新安定バージョンのインストール
asdf install <name> latest
# asdf install erlang latest下記のように、特定のプレフィックスでの最新安定バージョンをインストールすることもできます。
asdf install <name> latest:<version>
# asdf install erlang latest:17インストール済みバージョン一覧
asdf list <name>
# asdf list erlang下記のように、特定のプレフィックスでのバージョンでフィルタすることもできます。
asdf list <name> <version>
# asdf list erlang 17インストール可能な全バージョン一覧
asdf list all <name>
# asdf list all erlang下記のように、特定のプレフィックスでのバージョンでフィルタすることもできます。
asdf list all <name> <version>
# asdf list all erlang 17最新安定バージョンの表示
asdf latest <name>
# asdf latest erlang下記のように、特定のプレフィックスでの最新安定バージョンで表示することもできます。
asdf latest <name> <version>
# asdf latest erlang 17バージョンのセット
.tool-versionsファイルで管理する
asdf set [flags] <name> <version> [<version>...]
# asdf set elixir 1.2.4 # set in current dir
# asdf set -u elixir 1.2.4 # set in .tool-versions file in home directory
# asdf set -p elixir 1.2.4 # set in existing .tool-versions file in a parent dir
asdf set <name> latest[:<version>]
# asdf set elixir latestasdf setはカレントディレクトリの.tool-versionsファイルにバージョンを書き込みます。これは単純に利便性のために存在します。echo "<tool> <version>" > .tool-versionsを実行するようなものと考えてください。
u または --homeフラグをつけてasdf setを実行すると、$HOMEディレクトリの.tool-versionsファイルにバージョンを書き込みます。ファイルが存在しない場合は作成されます。
pまたは --parentフラグをつけてasdf setを実行すると、カレントディレクトリから親ディレクトリを探索し、最初に見つかった.tool-versions ファイルにバージョンを書き込みます。
環境変数で管理する
バージョンを決定するときに、ASDF_${TOOL}_VERSIONというパターンの環境変数を探します。バージョンの形式は.tool-versionsファイルでサポートされているものと同じです。設定されている場合、この環境変数の値は.tool-versionsファイルでのバージョン指定よりも優先されます。たとえば:
export ASDF_ELIXIR_VERSION=1.18.1これは現在のシェルセッションではElixir 1.18.1を使うようasdfに指示します。
WARNING
これは環境変数なので、設定されたセッションでのみ有効になります。 実行中の他のセッションでは、.tool-versionsファイルに設定されているバージョンを引き続き使用します。
.tool-versionsファイルについて詳しくは、構成設定のリファレンスをご覧ください。
下記の例では、バージョン1.4.0のElixirプロジェクトに対して、テストを実行させています。
ASDF_ELIXIR_VERSION=1.4.0 mix testシステムバージョンへの委任
asdfで管理されているバージョンではなく、<name>で指定されたツールのシステムバージョンを使用するには、バージョンとしてsystemを指定します。
バージョンのセットと同様に、asdf setまたは環境変数でsystemをセットしてください。
asdf set <name> system
# asdf set python systemカレントバージョンの表示
asdf current
# asdf current
# erlang 17.3 /Users/kim/.tool-versions
# nodejs 6.11.5 /Users/kim/cool-node-project/.tool-versions
asdf current <name>
# asdf current erlang
# erlang 17.3 /Users/kim/.tool-versionsバージョンのアンインストール
asdf uninstall <name> <version>
# asdf uninstall erlang 17.3Shims
asdfがパッケージをインストールすると、そのパッケージに含まれるすべての実行プログラムのShimが$ASDF_DATA_DIR/shimsディレクトリ(デフォルトは~/.asdf/shims)に作成されます。このディレクトリが(asdf.shやasdf.fishなどによって)$PATHに設定されることで、インストールされているプログラムが当該環境で利用できるようになります。
Shim自体は非常に単純なラッパーであり、asdf execというヘルパープログラムに、プラグイン名と、Shimがラップしているインストール済みパッケージの実行ファイルのパスを渡して、execします。
asdf execヘルパーは、使用するパッケージのバージョン(.tool-versionsファイルで指定されたもの、または環境変数で指定されたもの)、パッケージのインストールディレクトリにある実行ファイルの完全パス(プラグインのexec-pathコールバックで操作可能)、および実行環境(プラグインのexec-envスクリプトで提供)を決定し、実行します。
備考
本システムはexec呼び出しを使用するため、シェルによってsourceされるパッケージ内のスクリプトは、Shimラッパーを経由させずに直接アクセスする必要があります。asdfで用意されているwhichおよびwhereコマンドは、下記のように、インストールされたパッケージへのパスを返すため、この状況を解決するのに役立ちます:
# returns path to main executable in current version
source $(asdf which ${PLUGIN})/../script.sh
# returns path to the package installation directory
source $(asdf where ${PLUGIN})/bin/script.shasdfのShimのバイパス
何らかの理由でasdfのShimをバイパスしたい場合や、プロジェクトのディレクトリに移動した際に自動的に環境変数を設定したい場合は、asdf-direnvプラグインが役に立ちます。詳細はREADMEをご確認ください。