Skip to content

構成設定

asdfの構成設定には、他人と共有可能な.tool-versionsファイルと、.asdfrcや環境変数によってカスタマイズ可能なユーザ固有の設定とがあります。

.tool-versions

.tool-versionsファイルがディレクトリに存在する場合、当該ディレクトリおよびサブディレクトリで、ファイル内で宣言しているツールのバージョンが使用されます。

備考

グローバルのデフォルト値は、$HOME/.tool-versionsファイルで設定できます。

.tool-versionsファイル内は下記のような記述となっています:

ruby 2.5.3
nodejs 10.15.0

コメントを含めることもできます:

ruby 2.5.3 # This is a comment
# This is another comment
nodejs 10.15.0

バージョンの表記は下記の形式があります:

  • 10.15.0 - 実バージョンの表記です。バイナリのダウンロードに対応しているプラグインの場合、バイナリがダウンロードされます。
  • ref:v1.0.2-a or ref:39cb398vb39 - 指定されたタグ/コミット/ブランチをgithubからダウンロードし、コンパイルされます。
  • path:~/src/elixir - 使用するツールをカスタムコンパイルしたバージョンへのパスです。言語開発者などが使用します。
  • system - このキーワードを指定した場合、asdfが管理していない、システム上のツールバージョンへパススルーします。

ヒント

スペースで区切れば、複数のバージョンを指定できます。例えば、Python 3.7.2を使用し、Python 2.7.15にフォールバックし、最終的にsystemのPythonにフォールバックさせるには、.tool-versionsに下記の行を追記します。

python 3.7.2 2.7.15 system

.tool-versionsファイルで定義されているすべてのツールをインストールするには、.tool-versionsファイルを含むディレクトリで、asdf installコマンドを引数を指定せずに実行します。

.tool-versionsファイルで定義されている単一のツールをインストールするには、.tool-versionsファイルを含むディレクトリで、asdf install <name>コマンドを実行します。ツールは、.tool-versionsファイルで指定されたバージョンでインストールされます。

ファイルは、直接編集するか、asdf localコマンド(またはasdf globalコマンド)を使用して更新してください。

.asdfrc

.asdfrcでは、ユーザのマシン固有の構成を設定します。

asdfはデフォルトで${HOME}/.asdfrcに構成ファイルを配置します。ファイルの場所は、ASDF_CONFIG_FILE環境変数で設定できます。

下記は、構成に必要な項目とそのデフォルト値を示しています:

txt
legacy_version_file = no
use_release_candidates = no
always_keep_download = no
plugin_repository_last_check_duration = 60
disable_plugin_short_name_repository = no
concurrency = auto

legacy_version_file

対応しているプラグインの場合、他のバージョンマネージャで使用されているバージョンファイルを読み込むことができます。例えば、Rubyのrbenvであれば.ruby-versionファイルを読み込みます。

オプション説明
no デフォルトバージョンの読み込みには.tool-versionsを使用します
yes利用可能なレガシーバージョンファイル(.ruby-versionなど)がある場合、プラグインのフォールバックで使用します

use_release_candidates

asdf updateコマンドでasdfを更新する際に、最新リリースではなく、リリース候補版へ更新するか制御します。

オプション説明
no デフォルト最新リリースを使用します
yesリリース候補版を使用します

always_keep_download

asdf installコマンドでダウンロードしたソースコードやバイナリを、保持しておくか削除するかを制御します。

オプション説明
no デフォルトインストールが成功したら、ソースコードやバイナリを削除します
yesインストール後も、ソースコードやバイナリを保持します

plugin_repository_last_check_duration

asdfプラグインリポジトリの同期間隔(分)を制御します。何らかのトリガーイベントが発生した際に、最後に同期した時刻からの経過時間をチェックします。設定された間隔以上の時間が経過していた倍は、新たに同期が開始されます。

オプション説明
1から999999999までの整数値
デフォルト60
最後に同期した時刻から指定時間(分)以上経過していた場合、トリガーイベントで同期します
0トリガーイベントのたびに同期します
never同期しません

同期は、以下のコマンドが実行されたときに発生します:

  • asdf plugin add <name>
  • asdf plugin list all

asdf plugin add <name> <git-url>コマンドでは、プラグインの同期はトリガーされません。

備考

値をneverにしても、プラグインリポジトリの初期同期は停止されません。この動作については、disable_plugin_short_name_repositoryの節をご覧ください。

disable_plugin_short_name_repository

asdfプラグインのショートネームリポジトリの同期を無効化します。ショートネームリポジトリが無効となっている場合、同期イベントはすぐに終了します。

オプション説明
no デフォルト同期イベントが発生した際に、asdfプラグインリポジトリをクローンまたは更新します
yesプラグインショートネームリポジトリを無効化します

同期は、以下のコマンドが実行されたときに発生します:

  • asdf plugin add <name>
  • asdf plugin list all

asdf plugin add <name> <git-url>コマンドでは、プラグインの同期はトリガーされません。

備考

プラグインショートネームリポジトリを無効化しても、すでに同期されたリポジトリは削除されません。プラグインリポジトリを削除するには、rm --recursive --trash $ASDF_DATA_DIR/repositoryコマンドを実行してください。

また、プラグインショートネームリポジトリを無効化しても、以前にこのソースからインストールされたプラグインは削除されません。プラグインを削除するには、asdf plugin remove <name>コマンドを実行してください。プラグインを削除すると、そのプラグインでインストールされたすべてのツールバージョンが削除されます。

concurrency

コンパイル時に使用するデフォルトのコア数です。

OptionsDescription
整数値ソースコードのコンパイル時に使用するコア数です
autonprocsysctl hw.ncpu/proc/cpuinfo、または1、の優先順でコア数を計算します

備考: ASDF_CONCURRENCY環境変数が設定されている場合はそちらが優先されます。

プラグインフック

下記のタイミングで、カスタムコードを実行することができます:

  • プラグインのインストール、Shim再生成、更新および削除をする際の前後
  • プラグインコマンドの実行前後

例えば、fooというプラグインがインストールされていて、barという実行可能ファイルが提供されている場合、以下のようなフックを使うことで、一番最初にカスタムコードを実行することができます:

text
pre_foo_bar = echo Executing with args: $@

以下のパターンがサポートされています:

  • pre_<plugin_name>_<command>
  • pre_asdf_download_<plugin_name>
  • {pre,post}_asdf_{install,reshim,uninstall}_<plugin_name>
    • $1: フルバージョン
  • {pre,post}_asdf_plugin_{add,update,remove,reshim}
    • $1: プラグイン名
  • {pre,post}_asdf_plugin_{add,update,remove}_<plugin_name>

どのようなコマンドの前後にどのようなコマンドフックを実行すべきかについての詳細は、プラグインの作成をご覧ください。

環境変数

環境変数の設定値は、お使いのシステムやシェルによって異なります。デフォルトロケーションは、インストールした場所や方法(Gitクローン、Homebrew、AUR)によって異なります。

環境変数は通常、asdf.sh/asdf.fishなどをsourceする前に設定する必要があります。Elvishの場合は、use asdfの上側に設定します。

以下では、Bashシェルでの使用方法について説明します。

ASDF_CONFIG_FILE

.asdfrc構成ファイルへのパスです。任意の場所に設定できます。必ず絶対パスで設定してください。

  • 未設定の場合: $HOME/.asdfrcの値が使用されます。
  • 使用方法: export ASDF_CONFIG_FILE=/home/john_doe/.config/asdf/.asdfrc

ASDF_DEFAULT_TOOL_VERSIONS_FILENAME

ツール名とバージョンの情報を格納するファイルのファイル名です。有効なファイル名であれば何でも設定できます。通常、.tool-versionsファイルを無視したい場合を除き、この値を変更するべきではありません。

  • 未設定の場合: .tool-versionsの値が使用されます。
  • 使用方法: export ASDF_DEFAULT_TOOL_VERSIONS_FILENAME=tool_versions

ASDF_DIR

asdfのコアスクリプト場所です。任意の場所に設定できます。必ず絶対パスで設定してください。

  • 未設定の場合: bin/asdf実行ファイルの親ディレクトリが使用されます。
  • 使用方法: export ASDF_DIR=/home/john_doe/.config/asdf

ASDF_DATA_DIR

asdfがプラグイン、Shim、ツールのバージョンをインストールする場所です。任意の場所に設定できます。必ず絶対パスで設定してください。

  • 未設定の場合: $HOME/.asdfディレクトリが存在すればその場所、存在しない場合はASDF_DIRの値を使用します。
  • 使用方法: export ASDF_DATA_DIR=/home/john_doe/.asdf

ASDF_CONCURRENCY

ソースコードのコンパイル時に使用するコア数です。この環境変数の値は、asdf構成ファイルのconcurrencyの値よりも優先されます。

  • 未設定の場合: asdf構成ファイルのconcurrencyの値が使用されます。
  • 使用方法: export ASDF_CONCURRENCY=32

ASDF_FORCE_PREPEND

asdfのShimやパスのディレクトリをPATHの先頭(最高優先度)に追加するかどうかを設定します。

  • 未設定の場合: macOSでのデフォルト値はyes、その他のシステムでのデフォルト値はnoです。
  • yesの場合: asdfディレクトリを強制的にPATHの先頭に配置します。
  • yes以外の文字列を設定した場合: asdfディレクトリを強制的にPATHの先頭に配置することは しません
  • Usage: ASDF_FORCE_PREPEND=no . "<path-to-asdf-directory>/asdf.sh"

完全な構成の例

下記のように、asdfをシンプルにセットアップしたとします:

  • Bashシェル
  • インストール先は$HOME/.asdf
  • Git経由でインストール
  • 環境変数は何も設定していない
  • .asdfrcファイルは何もカスタマイズしていない

すると、結果として以下のような構成となります:

構成値がセットされる過程
config file location$HOME/.asdfrcASDF_CONFIG_FILEは空なので、$HOME/.asdfrcが使用されます。
default tool versions filename.tool-versionsASDF_DEFAULT_TOOL_VERSIONS_FILENAMEは空なので、.tool-versionsが使用されます。
asdf dir$HOME/.asdfASDF_DIRは空なので、bin/asdfの親ディレクトリが使用されます。
asdf data dir$HOME/.asdfASDF_DATA_DIRは空であり、$HOMEが存在するので、$HOME/.asdfが使用されます。
concurrencyautoASDF_CONCURRENCYは空なので、デフォルト構成concurrencyの値に依存します。
legacy_version_fileno.asdfrcをカスタマイズしていないので、デフォルト構成を使用します。
use_release_candidatesno.asdfrcをカスタマイズしていないので、デフォルト構成を使用します。
always_keep_downloadno.asdfrcをカスタマイズしていないので、デフォルト構成を使用します。
plugin_repository_last_check_duration60.asdfrcをカスタマイズしていないので、デフォルト構成を使用します。
disable_plugin_short_name_repositoryno.asdfrcをカスタマイズしていないので、デフォルト構成を使用します。

内部構成

この節では、パッケージマネージャやインテグレータ向けのasdfの内部構成について記述しているため、ユーザが気にする必要はありません。

  • $ASDF_DIR/asdf_updates_disabled: このファイルが存在する場合、asdf updateコマンドによる更新は無効になります(ファイル内容は関係ありません)。これは、PacmanやHomebrewのようなパッケージマネージャによって使用され、特定のインストールに対して正しい更新方法を適用するようにします。