💧

aqua で一定期間使われていないツールをアンインストール

2025/01/25に公開

CLI Version Manager の aqua が一定期間使われていないツールの uninstall をサポートしました。

https://github.com/aquaproj/aqua/releases/tag/v2.43.0
https://github.com/aquaproj/aqua/pull/3467
https://aquaproj.github.io/docs/guides/vacuum

aqua vacuum というコマンドが追加されました。

aqua vacuum

このコマンドは一定期間使われていないツールを削除します。
デフォルトの期限は 60 日ですが、環境変数 AQUA_VACUUM_DAYS かコマンドラインオプション -days (-d) で変更できます。

export AQUA_VACUUM_DAYS=90
aqua vacuum -d 30

パフォーマンス悪化はほぼなし

この機能はツールをインストールまたは実行した際に最終使用日時を更新する必要があります。
aqua を介したツール実行でパフォーマンスが悪化するのは避けなければなりませんが、ベンチマークの結果パフォーマンスの劣化はほぼないことが分かっています。

注意点

aqua v2.42.2 以前を使ってインストールされたツールは最終使用日時の情報を持たないので基本削除されないことに注意が必要です。

aqua v2.43.0 から内部的に各ツールが最後に使用された日時を保持するようになりました。
この日時と現在の日時、そして有効期限を比較して有効期限切れのものを削除します。
この日時はツールをインストールまたは実行した際に更新され、アンインストールした際に削除されます。
つまり aqua v2.43.0 以前のバージョンの aqua を使ってインストールされたツールは最終仕様日時の情報を持たないため、削除ができません。

aqua vacuum --init はこの問題を緩和します。
aqua vacuum --init$AQUA_GLOBAL_CONFIG を含む aqua.yaml で定義されているツールがインストール済みかチェックし、インストール済みで最終使用日時の情報を持たないツールの最終使用日時を現在日時に設定します。

aqua vacuum --init

ただし aqua vacuum --init でも aqua.yaml で定義されてないツールの最終使用日時は設定できず、削除対象に含めることができません。
どうしても消したい場合、一度 aqua rm --all で全部消すしかありません。
aqua を v2.43.0 以上に update したあとに一度全部消して再インストールすればそれ以降はすべてのツールが最終使用日時の情報を持つようになります。

Discussion