anyenv使ってますか?私は使っていました。っというのも最近とある案件でasdfをつかっているのをみて、ちょっと試してみたところ、なかなかよかったのでこちらに乗り換えました。
asdfってなんじゃろ?
asdfはツールやプログラミング言語のバージョンを管理するもので、**envを1つにまとめたようなツールです。 anyenvとの違いは、anyenvは**envツールをインストールするだけで、各言語のバージョン管理は**env任せになるのに対し、asdfはasdfを起点に管理を行うというところです。また、プラグインを追加することで、管理できるツールや言語を増やせすこともできます。
- コミュニティで提供しているプラグイン
https://github.com/orgs/asdf-community/repositories
- asdf-pluginトピック
https://github.com/topics/asdf-plugin
インストール
インストール方法は公式ドキュメントのGetting Startedに色々と書いてありますので、ご自身の環境に合わせてセットアップしてみてください。macOSならHomebrewが簡単でしょうか。asdfはただのシェルルスクリプトで、asdf.shをsourceすればすぐに使い始められるので、私はZshのプラグインマネージャーに任せています。asdfはgit、curl、gpg、gawkに依存しています。もしasdfをインストールする環境にこれらのツールが入っていなければ、入れておいてください。
使ってみる
私が所属するOpsチームではTerraformのバージョンを固定して使っていますので、Terraformを例に使っていきたいと思います。
それではまず作業ディレクトリを作成します。
mkdir workdir cd workdir
バージョンを固定するために.tool-versions
というファイルを作っていきます。
touch .tool-versions
中身は空で大丈夫です。後で出てくるバージョン指定のコマンドを実行すると自動で挿入されます。もし、チーム内でバージョンを固定する場合は、.tool-versions
をリポジトリに含めてください。
プラグインを追加します。
asdf plugin-add terraform https://github.com/asdf-community/asdf-hashicorp.git
この段階ではまだプラグインが追加されただけで、実際にツールも言語も使うことができません。インストールしていきます。
asdf list all terraform # インストールできるバージョンを確認 asdf install terraform 1.2.7 # このバージョンのソースコードを~/.asdf以下にインストール asdf local terraform 1.2.7 # 作業ディレクトリ以下でどのバージョンを使うか指定
今回はなんとなくバージョン1.2.7にしてみました。先ほど空で作った.tool-versions
の中身を確認してみてください。
terraform 1.2.7
ツールとそのバージョンが指定されていれば成功です。
このように.tool-versions
でツールとバージョンが指定されていれば、同じリポジトリで作業する人は以下のコマンドを実行するだけで、同じツール、同じバージョンを使うことができます。
asdf install
実際に指定したバージョンが使えるかみてみましょう。
terraform version
もしcommand not found
などで実行できなければ、PATHが通っていないか、ここまでの手順に問題があったのだと思います。もう一度Getting Startedを参考に進めてみてください。