メインコンテンツまでスキップ

asdf

asdf は、複数のツールのバージョンを管理できるツールです。 指定したバージョンのツールを簡単にインストールできるため、とても便利です。

apt や brew などのパッケージマネージャーを使ってツールをインストールすることも可能ですが、asdf を使うことでバージョンの切り替えが簡単にでき、さらに便利になります。

このページでは asdf のかんたんな使い方を中心に説明します。

asdf の説明動画​

※ 小さいのでYouTubeを開いて見ることをお勧めします。
※ asdf v0.16.0 から asdf global と asdf local は利用できなくなりました。代わりに asdf set を利用してください。

  • グローバル設定(どのディレクトリでも使える)
    • ❌ asdf global nodejs 20.10.0
    • ⭕️ asdf set --home nodejs 20.10.0
  • 特定のプロジェクト(ディレクトリ配下) の場合
    • ❌ asdf local nodejs 20.10.0
    • ⭕️ asdf set nodejs 20.10.0

asdf のインストール​

はじめよう | asdf を見ながら asdf をインストールしてください。

操作の流れ​

順番手順対応するコマンド説明
1プラグインの追加asdf plugin add <プラグイン名>ツールに対応するプラグインを追加する
(プラグインを追加していない場合のみ)
2ツールのインストールasdf install <ツール名> <バージョン>ツールのバージョンを指定してインストールする
3バージョンの指定asdf set --home <ツール名> <バージョン>
または
asdf set <ツール名> <バージョン>
利用したいバージョンを指定する
- オプションなし: カレントディレクトリ
- --home: ホームディレクトリ
- --parent: 親ディレクトリの .tool-versions

1. プラグインの追加​

asdf は plugin を追加することで、インストールできる対象のツールを増やしていきます。

インストールしたいツールのプラグインは asdf-vm/asdf-plugins で確認できますが、コマンドでも確認できます。

asdf plugin list all を実行すると追加することができる plugin の一覧が表示されます。
そのため以下のようにするとコマンドのみでインストールしたいツールのプラグインがあるか確認できます。

asdf plugin list all | grep <追加したいツール>

例: kubectl を探す場合

asdf plugin list all | grep kubectl
実行結果
❯ asdf plugin list all | grep kubectl
kubectl *https://github.com/asdf-community/asdf-kubectl.git
kubectl-bindrole https://github.com/looztra/asdf-kubectl-bindrole.git
kubectl-buildkit https://github.com/ezcater/asdf-kubectl-buildkit.git
kubectl-convert https://github.com/iul1an/asdf-kubectl-convert.git
kubectl-kots https://github.com/ganta/asdf-kubectl-kots.git

上記で確認できたので、以下を実行すると kubectl の plugin を追加できます。

asdf plugin add kubectl

2. ツールのインストール​

plugin を追加したらツールをインストールできます。 asdf は自分が使いたいバージョンのツールをインストールすることができます。インストール済みのバージョン画複数ある場合、かんたんに切り替えることも可能です。

まずはインストールできるバージョンを確認しましょう。 以下のコマンドでインストール可能なバージョンの一覧が確認できます。

asdf list all <インストールしたいツール>

例: kubectl の場合

asdf list all kubectl
実行結果
❯ asdf list all kubectl
...省略
1.30.0
1.30.1
1.30.2
1.31.0-alpha.0
1.31.0-alpha.1
1.31.0-alpha.2
1.31.0-alpha.3

上記でインストールできるバージョンがわかったらインストールを実行します。

例: kubectl 1.30.0 をインストールする場合

asdf install kubectl 1.30.0

また最新をインストールしたい場合は、 latest を指定できます。

例: kubectl の最新バージョンをインストールする場合

asdf install kubectl latest

インストールしたものは以下のコマンドで確認できます

例: インストールしたツールをすべて表示

asdf list
実行結果
❯ asdf list
helm
*3.15.4
jmespath
*0.2.1
kubectl
1.26.3
1.27.1
1.29.3
*1.30.0
minikube
1.30.0
1.30.1
*1.33.1

※ * が付いているバージョンを利用します(変更する際は asdf set --home か asdf set を使います)

例: kubectl のインストール済みのバージョンを確認する

asdf list kubectl
実行結果
❯ asdf list kubectl
1.26.3
1.27.1
1.29.3
*1.30.0

3. バージョンの指定​

インストール済みのツールのコマンドはインストールしただけでは利用できません。

以下を実行すると指定したバージョンでツールのコマンドを利用できるようになります。

どのディレクトリでも指定バージョンのコマンドを利用できるように設定する​

asdf set --home を使うことで、カレントディレクトリがどこであろうと指定したバージョンのツールのコマンドを利用できるようになります。

asdf set --home <ツール名> <バージョン>

例: kubectl 1.30.0 を使う場合

asdf set --home kubectl 1.30.0

なお、asdf set --home で設定したツールのバージョン情報は ~/.tool-versions の中で管理されています。

例: ~/.tool-versions の中身

❯ cat ~/.tool-versions
kubectl 1.30.0
nodejs 22.5.1

特定のディレクトリ以下で指定バージョンのコマンドを利用できるように設定する​

asdf set を使うことで、特定のディレクトリ以下で作業するときのみツールのバージョンを変更することができます。

asdf set <ツール名> <バージョン>

例: kubectl 1.30.0 を使う場合

asdf set kubectl 1.30.0

asdf set --home と同様で、バージョン情報は .tool-versions で管理されます。
しかし、asdf set --home とは違い asdf set を実行したディレクトリ直下に .tool-versions が作成されます。

例: .tool-versions の中身

❯ cat ./.tool-versions
kubectl 1.30.0

asdf コマンドの例​

kubectl を例にしたコマンドを表にまとめました。以下を参考に、他のコマンドもインストールしてみてください。

プラグイン関係の操作の例​

説明コマンド
追加可能なプラグイン一覧を表示asdf plugin list all
追加済みのプラグイン一覧を表示asdf plugin list
kubectlのプラグインを追加asdf plugin add kubectl

コマンドのインストールと切り替え関係の操作の例​

説明コマンド
インストール可能なkubectlの全バージョンを表示asdf list all kubectl
インストール済みのkubectlのバージョンを表示asdf list kubectl
kubectlの最新のバージョンをインストールasdf install kubectl latest
kubectlの最新バージョンをグローバルに設定asdf set --home kubectl latest
kubectlの特定のバージョンをインストールasdf install kubectl 1.30.0
kubectlのバージョンをグローバルに設定asdf set --home kubectl 1.30.0

※ install をしただけではコマンドは利用できません。インストール後に asdf set --home を実行してください。