Closed cumet04 closed 9 months ago
anyenvの代わりにasdfを入れ、あわせてgoとterraformのインストールをasdfに寄せた
偶然最近気に入っているOSSを淡々と紹介するという記事を見て、rtxというツールが紹介されており気になっていた。また別件で、仕事でterraformのバージョン切り替えをやりたいと漠然と思っていたこともあり、入れてみることにした。
概ね良さそうだったのだが、rbenvやnodenvなどと違い、ツールのバージョン切り替えはhook-envという要するにdirenvな機能を使って実現されており、vscode拡張対応がシンプルにできないことがわかった。 ※この仕様は意図的なようで、インタラクティブシェルで使うのであれば高速かつシンプルに動くようだ
hook-env
そこでrtxの利用はやめることにしたが、READMEにrtx is inspired by [asdf](https://asdf-vm.com/)とあり、またasdfというのもよく聞くし、上記仕様の話を見るにasdfはrbenvなどと近い方式で動いていそう(vscode拡張対応が今まで通りできる)に見えたため、そちらを検討することにした。
rtx is inspired by [asdf](https://asdf-vm.com/)
node install 20
.envrc
十分に動いているし、特に問題があったわけではない。
強いて言うなら
あたり。
もともとサードパーティのaptソースを使っていたが、Ubuntuディストリ更新への追従に時間がかかったこと・ちょうどその時期にgoをそこそこ最新で触っていたことから、最新に追従しやすい公式ダウンロード(の自前実装)に切り替えていた。
最近はgoはそんなに使っていないし、基本的に即最新がほしい訳でもないし、ansibleの実装がそこそこごちゃついていたのもあり、割と軽いノリで切り替えてみることにした。
goはプロジェクトごとにバージョン切り替えする需要は無いので、基本的にset globalのみで運用する想定。
公式apt方式だったので健全な入れ方をしていたが、仕事上で複数のterraform(というかcdktf)プロジェクトを触る状況になったので、切り替え方法が欲しかった。
それ以外に特に不満はなかった。
名前がアレで敬遠していたが、まぁ普通に一枚板なanyenvという感じで良さげ。色々あるのがスッキリしたのでよかった。
node-buildやruby-buildは明示的に入れずとも勝手によろしくやってくれるし、list allしたときには都度アップデートするので、anyenv update相当が必要無い。このあたりは使い勝手としてとても良い。 ※少なくとも今回入れたruby, node, go, terraformはプラグインのコードを見て確かめた
node-build
ruby-build
list all
anyenv update
気になる点でいえば、
legacy_version_file
ASDF_DATA_DIR
If Unset: $HOME/.asdf if it exists, or else the value of ASDF_DIR
$HOME/.asdf
$ASDF_DIR
くらい。
その他検討中の一連のツール導入が終わったらwsl再インストールを実施し、問題なければmerge
概要
anyenvの代わりにasdfを入れ、あわせてgoとterraformのインストールをasdfに寄せた
背景
偶然最近気に入っているOSSを淡々と紹介するという記事を見て、rtxというツールが紹介されており気になっていた。また別件で、仕事でterraformのバージョン切り替えをやりたいと漠然と思っていたこともあり、入れてみることにした。
概ね良さそうだったのだが、rbenvやnodenvなどと違い、ツールのバージョン切り替えは
hook-env
という要するにdirenvな機能を使って実現されており、vscode拡張対応がシンプルにできないことがわかった。 ※この仕様は意図的なようで、インタラクティブシェルで使うのであれば高速かつシンプルに動くようだそこでrtxの利用はやめることにしたが、READMEに
rtx is inspired by [asdf](https://asdf-vm.com/)
とあり、またasdfというのもよく聞くし、上記仕様の話を見るにasdfはrbenvなどと近い方式で動いていそう(vscode拡張対応が今まで通りできる)に見えたため、そちらを検討することにした。rtxよかったところ
node install 20
みたいにざっくり指定すると、いい感じにその最新が入る.envrc
は動かない従来の状況
anyenv
十分に動いているし、特に問題があったわけではない。
強いて言うなら
あたり。
go
もともとサードパーティのaptソースを使っていたが、Ubuntuディストリ更新への追従に時間がかかったこと・ちょうどその時期にgoをそこそこ最新で触っていたことから、最新に追従しやすい公式ダウンロード(の自前実装)に切り替えていた。
最近はgoはそんなに使っていないし、基本的に即最新がほしい訳でもないし、ansibleの実装がそこそこごちゃついていたのもあり、割と軽いノリで切り替えてみることにした。
goはプロジェクトごとにバージョン切り替えする需要は無いので、基本的にset globalのみで運用する想定。
terraform
公式apt方式だったので健全な入れ方をしていたが、仕事上で複数のterraform(というかcdktf)プロジェクトを触る状況になったので、切り替え方法が欲しかった。
それ以外に特に不満はなかった。
asdf雑感
名前がアレで敬遠していたが、まぁ普通に一枚板なanyenvという感じで良さげ。色々あるのがスッキリしたのでよかった。
node-build
やruby-build
は明示的に入れずとも勝手によろしくやってくれるし、list all
したときには都度アップデートするので、anyenv update
相当が必要無い。このあたりは使い勝手としてとても良い。 ※少なくとも今回入れたruby, node, go, terraformはプラグインのコードを見て確かめた気になる点でいえば、
legacy_version_file
がデフォルトじゃない(チーム開発でgitに入れるファイル考えたらデフォルトでしょ...)ASDF_DATA_DIR
の挙動がドキュメントと食い違っているIf Unset: $HOME/.asdf if it exists, or else the value of ASDF_DIR
とあるが、$HOME/.asdf
が存在しない場合も$ASDF_DIR
ではなく$HOME/.asdf
が使われるくらい。