Archive

Windows で aqua を 2.30.x にアップデートするときの注意

少し時間が経っているが、先日 aqua の 2.30.0 がリリースされ、仕様が大きく変更されている。それ関連でaquaのプロセス数が爆発してPCが応答不能に陥るトラブルがあったのでまとめておく。

ちなみにタイトルで Windows と書いているがWSL2のArchLinux環境ではこのような現象には遭遇していない。その他の環境は未確認。

結論: リリースノートをちゃんと見ましょう

後述するトラブルはリリースノートに記載されている以下の対応をすれば基本的に回避できるのでやりましょう。という話。

So aqua v2.30.0 or later uses hard links and aqua-proxy instead of shell scripts and bat scripts. #2918 aqua installs aqua-proxy and creates hard links to aqua-proxy on $(aqua root-dir)/bin directory. When aqua updates aqua-proxy, aqua recreates hard links. From aqua v2.30.0, aqua doesn't use bat scripts so you can remove y directory and remove $(aqua root-dir)/bat from PATH.
Release v2.30.0 · aquaproj/aqua より

2.30.0以降は aqua でインストールするツールはシェルスクリプトとbatスクリプトは利用せずにハードリンクとaqua-proxyを使うようになった関係で設定を変更する必要がある。特にWindows 環境では $(aqua root-dir)/bat にPATHを通す必要があったけど、2.30.0以降はbatスクリプトは使わないので削除しましょうという内容。

$(aqua root-dir)/bat を消し忘れると aqua のプロセス数が爆発する

Windows環境において aqua 2.30.0 以降にアップデートしてからも $(aqua root-dir)/bat を残してPATHを通したままにするとどうなるかというと、特定条件で aqua 経由でインストールしたツールを使おうとすると aqua のプロセス数が爆発。フォークボムのような現象が発生してPCが応答不能になる。

完全に再現条件を洗い出せたわけではないものの、以下のケースでは発生することは確認済み。

  • 特定のプロジェクトで追加しているツールを、プロジェクト外で使おうとする

例えば以下のケースは Windows11 にて aqua のグローバルに追加されている ecspresso とグローバルでは追加されていない ruff を使ってみようとした様子

みるみる aqua のプロセスが増えていき、徐々にPCの動作がもっさりしていき、最終的には再起動以外にできることがなくなってしまうという困った状況になってしまう。

特に、最初この現象に遭遇したのが neovim で Python のコードを開いたときに発生していたため原因がよくわからずに困ったが、formatter として使っていた ruff が怪しいという流れになり、最終的に aqua までたどり着いた感じ。

最初は「aqua のバグか?」と思い Issue を上げることも考えたが、いろいろ情報を確認していくうちに冒頭に記載したリリースノートの文章を発見したため「リリースノートをちゃんと読みましょう」という結論になった。

対応

ということで、環境変数の PATH$(aqua root-dir)/bat$(aqua root-dir)/bin に変更したところ、この現象は発生しなくなった。ついでに $(aqua root-dir)/bat は削除した。