asdf とは
asdf は python や Go などのプログラミング言語に加え、awscli や terraform などの様々なツールのバージョン管理を行うことができるツールです。
これまで、 anyenv を使用して、プログラミング言語の管理を行ってきましたが、shell が非常に重くなるので、asdf に切り替えました。
インストール方法
インストールは brew で実施可能ですので非常に簡単です。
brew 以外にも様々な方法でのインストールが可能です。
https://asdf-vm.com/#/core-manage-asdf?id=install
インストールが完了したら shell に asdf.sh を読み込ませる設定を記述するだけです。
具体的な記述内容は↓のサイトを確認
https://asdf-vm.com/#/core-manage-asdf?id=add-to-your-shell
shell を再起動すると、PATH に asdf が追加され、コマンドが実行できるようになります。
exec $SHELL -l
使用方法
使い方も簡単で、初めに asdf で管理したいパッケージのプラグインをインストールします。そのあとに、指定のバージョンのパッケージをインストールします。
インストールできるプラグインは非常に充実しています。
anyenv では プログラミング言語のバージョン管理だけでしたが、asdf では様々なツールのバージョン管理もできます。
プラグインの追加
asdf plugin add <name>
# asdf plugin add python
追加可能なプラグインは↓のコマンドで確認可能です。
asdf plugin list all
プラグインの表示
インストール済みのプラグインは↓のコマンドで確認が可能です。
asdf plugin list
パッケージのインストール
指定のバージョンのパッケージのをインストールする場合には、パッケージ名とバージョンを指定します。バージョンに指定できる値は、plugin によって異なるので、詳細はそれぞれの pliugin の README を確認してください。
asdf install <name> <version>
# asdf install python 3.8.5
最新のバージョンをインストールする場合は、latest を指定します。
asdf install python latest
latest の後ろにバージョンを指定することでそのバージョンで始まる最新のパッケージがインストールされます。
asdf install <name> latest:<version>
# asdf install python latest:3.6
パッケージの表示
インストール済みのパッケージは↓のコマンド確認が可能です。
asdf list
下記のコマンドで指定したパッケージでインストール可能なバージョンを確認することができます。
asdf list all <name>
# asdf list all python
asdf list all <name> <version>
# asdf list all python 3.9
インストール可能な最新バージョンを確認する場合
asdf latest python
# 3.9.5
asdf latest python 3.6
# 3.6.13
パッケージの使用方法
使用するパッケージの使用方法には global
shell
local
の3種類があります。
設定 | 設定ファイル/環境変数 | 説明 |
---|---|---|
global | $HOME/.tool-versions | 指定がない場合に使用するバージョンを設定 |
shell | ASDF_${LANG}_VERSION | 使用している shell の時だけバージョンを変更したい場合 |
local | $PWD/.tool-versions | 特定のディレクトリ内でだけバージョンを変更したい場合 |
asdf global <name> <version> [<version>...]
# asdf global python 3.8.5
asdf shell <name> <version> [<version>...]
# asdf shell python 3.6.13
asdf local <name> <version> [<version>...]
# asdf local python 3.8.5
元のシステムのバージョンに戻す方法
asdf local <name> system
# asdf local python system
現在のバージョンの確認方法
asdf current
# asdf current
# python 3.9.5 /Users/kikuchi/.tool-versions
asdf current <name>
# asdf current python
バージョンの削除
asdf uninstall <name> <version>
# asdf uninstall python 3.6.13
詳細な設定
.tool-versions
各種パッケージのバージョンは .tool-versions に定義します。
.tool-versions がカレントのディレクトリある場合、そのファイルが読み込まれます。
.tool-versions がカレントのディレクトリにない場合には、$HOME/.tool-versions に定義してあるバージョンが使用されます。
.tool-versions の記述方法
.tool-versions にはパッケージ名とバージョンを記述します。
python 3.9.5
nodejs system
system を指定した場合、asdf で管理しているパッケージではなく、システムに直接インストールされているものが使用されます。
$HOME/.asdfrc
.asdfrc ファイルをホームディレクトリに作成することで、asdf の設定を変更することができます。
以前、anyenvのような別のバージョン管理ツールを使用していた場合には、legacy_version_file を yes で設定しておくことをおすすめします。
設定値 | デフォルト | 説明 |
---|---|---|
legacy_version_file | no | yesに設定すると、この機能をサポートしているプラグインが、他のバージョン管理ツールで使用されているバージョンファイル(.pyenvなど)を読み取るようになります。 |
use_release_candidates | no | asdf update コマンドが最新のセマンティックバージョンではなく、最新のリリースのバージョンにアップグレードするようになります。 |
always_keep_download | no | yesに設定すると、asdf installがダウンロードしたソースコードやバイナリを常に保持するようになります。noに設定すると、asdf installがダウンロードしたソースコードやバイナリは、インストールが成功した後に削除されます。 |
plugin_repository_last_check_duration | 60min | asdfプラグインのリポジトリの最終チェック時間が設定されます。asdf plugin add , asdf plugin list all コマンドが実行されたとき、リポジトリを更新するために最終更新時間をチェックします。0に設定されていると、毎回asdfプラグインのリポジトリを更新します。 |
環境変数
環境変数 | デフォルト | 説明 |
---|---|---|
ASDF_CONFIG_FILE | ~/.asdfrc | .asdfrc ファイルのファイル名やPATHを変更できます。 |
ASDF_DEFAULT_TOOL_VERSIONS_FILENAME | .tool-versions | パッケージの情報を設定する .tool-versions のファイル名を変更することができます。基本的には変更しないほうが良いです。 |
ASDF_DIR | ~/.asdf | asdf のスクリプトを保存するするPATHを変更します。 |
ASDF_DATA_DIR | ~/.asdf | asdf pluginやパッケージ を保存するするPATHを変更します。 |
コメント