asdf を使用したパッケージ管理

Mac

asdf とは

asdf は python や Go などのプログラミング言語に加え、awscli や terraform などの様々なツールのバージョン管理を行うことができるツールです。
これまで、 anyenv を使用して、プログラミング言語の管理を行ってきましたが、shell が非常に重くなるので、asdf に切り替えました。

asdf | asdf
Manage multiple runtime versions with a single CLI tool

インストール方法

インストールは 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 で管理したいパッケージのプラグインをインストールします。そのあとに、指定のバージョンのパッケージをインストールします。
インストールできるプラグインは非常に充実しています。

asdf | asdf
Manage multiple runtime versions with a single CLI tool

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

plugin がインストールされていないと表示されません。

インストール可能な最新バージョンを確認する場合

asdf latest python
# 3.9.5

asdf latest python 3.6
# 3.6.13

パッケージの使用方法

使用するパッケージの使用方法には globalshelllocalの3種類があります。

設定設定ファイル/環境変数説明
global$HOME/.tool-versions指定がない場合に使用するバージョンを設定
shellASDF_${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 で管理しているパッケージではなく、システムに直接インストールされているものが使用されます。

asdf install コマンドを実行すると、.tool-versions に記述されているバージョンのパッケージが全てインストールされます。
asdf install でパッケージの名を指定してコマンドを実行することで、個別のインストールも可能です。

$HOME/.asdfrc

.asdfrc ファイルをホームディレクトリに作成することで、asdf の設定を変更することができます。
以前、anyenvのような別のバージョン管理ツールを使用していた場合には、legacy_version_file を yes で設定しておくことをおすすめします。

設定値デフォルト説明
legacy_version_filenoyesに設定すると、この機能をサポートしているプラグインが、他のバージョン管理ツールで使用されているバージョンファイル(.pyenvなど)を読み取るようになります。
use_release_candidatesnoasdf update コマンドが最新のセマンティックバージョンではなく、最新のリリースのバージョンにアップグレードするようになります。
always_keep_downloadnoyesに設定すると、asdf installがダウンロードしたソースコードやバイナリを常に保持するようになります。noに設定すると、asdf installがダウンロードしたソースコードやバイナリは、インストールが成功した後に削除されます。
plugin_repository_last_check_duration60minasdfプラグインのリポジトリの最終チェック時間が設定されます。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~/.asdfasdf のスクリプトを保存するするPATHを変更します。
ASDF_DATA_DIR~/.asdfasdf pluginやパッケージ を保存するするPATHを変更します。

コメント

タイトルとURLをコピーしました