🔰

バージョン管理ツール asdf 導入方法

2024/01/12に公開

asdf とは

asdf とは、各種言語やFW・ツールなどを一括でバージョン管理できるツールです。

asdf の特徴

  • 多言語対応
    • asdfは Java, Ruby, Python 等のプログラミング言語だけでなく、.NET, Node.js 等のフレームワーク、gralde 等のビルドツール等、多岐にわたります。
  • プラグインシステム
    • 様々な言語やツールに対応するためのプラグインシステムを持っており、必要に応じてプラグインを追加することができます。
  • バージョンの指定
    • プロジェクトごとに異なるバージョンの言語やツールを指定できます。
    • .tool-versions ファイルにバージョンを記述して git 管理を行うことで、そのプロジェクトで使用するバージョンを管理できます。
  • シンプルなコマンド
    • バージョンのインストール、切り替え、一覧表示などを簡単なコマンドで行うことができます。数回実施してれば覚えられるのでいちいちググる手間が省けます。
  • 動作の軽量さ
    • 競合である anyenv と比較して、体感 asdf のほうが圧倒的に早いです。

手順

ここでは、例として .NET を asdf を利用してインストールします。

前提条件

  • パッケージマネージャー: HomeBrew
  • シェル: zsh

asdf のインストール

まず、最初に HomeBrew を利用し、asdf をインストールします。

brew install asdf

インストール完了後、shell 起動時に読み込まれるようにパスを通します。

echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc

シェルを再起動します。

exec $SHELL

asdf へのパスが通っていればインストール完了です。

$ asdf --version
v0.13.1

プラグインの追加

asdf はバージョン管理する対象をプラグイン形式で追加します。

.NET プラグインの追加

ここでは、例として .NET を追加します。

asdf plugin add dotnet

結果確認

以下のコマンドで追加が確認できると OK です。

asdf plugin list

実行結果

$ asdf plugin list
dotnet

対象バージョンの追加

プラグインを追加したら、続いて対象のバージョンを指定してインストールしていきます。

インストール可能なバージョン一覧を確認

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

$ asdf list-all dotnet

実行結果

$ asdf list-all dotnet
1.1.14
1.1.14
2.1.202
2.1.818
2.2.207
3.0.103
3.1.426
5.0.408
6.0.417
7.0.404
8.0.100

対象のバージョンをインストール

対象のバージョンが見つかったら、インストールしていきます。
今回は 6.0.417 をインストールします。

asdf install dotnet 6.0.417

ここで複数バージョンをインストールしておくことも可能です。
latest を指定して、最新の 8.0.100 もインストールしてみます。

asdf install dotnet latest

結果確認

以下のコマンドを実行することでインストールされたバージョン一覧を確認できます。

asdf list dotnet

実行結果

2種類のバージョンがインストールされています。

$ asdf list dotnet
  6.0.417
  8.0.100

バージョンの有効化

asdf はインストールのみですぐに利用できるわけではありません。
global(シェル全体)、もしくは作業したいディレクトリ配下にてバージョンを指定して有効化をすることで利用可能になります。

global バージョンとして有効化したい場合

以下のコマンドを実行することで、全てのディレクトリにおいて .NET の 6.0.417 バージョンが利用可能となります。

asdf global dotnet 6.0.417

結果確認

$ dotnet --version
6.0.417

バージョンの変更

バージョンを 6.0.417 から 8.0.100 に切り替えたい場合、有効化したときと同様な以下のコマンドで変更します。

asdf global dotnet 8.0.100

結果確認

$ dotnet --version
8.0.100

特定のディレクトリ配下のみ有効化したい場合

以下のコマンドを実行することで、実行したディレクトリとその配下において .NET の 6.0.417 バージョンが利用可能となります。

asdf local dotnet 6.0.417

これにより、コマンドを実行したディレクトリに .tool-versions というファイルが作成されます。
これを git 管理することで利用者全員でバージョンを統一しつつ、かつ利用するバージョンを明示的に git に残すことも可能です。

$ cat .tool-versions
dotnet 6.0.417

結果確認

$ dotnet --version
6.0.417

プラグインの追加などがうまくいかない・反映されない場合

以下のコマンドを実行してから再度試してみるとうまくいくことがあります。

asdf reshim

参考

備考 【asdfの更に上位互換ツール?のご紹介】

mise(旧rtx) という asdf の更に上位互換的なツールも存在しているそうです。
こちらも使ってみて良さそうであれば記事にします。

GitHubで編集を提案

Discussion