バージョン管理ツール asdf 導入方法
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 の更に上位互換的なツールも存在しているそうです。
こちらも使ってみて良さそうであれば記事にします。
Discussion