昨日作った Dev Drive に特にキャッシュなど読み書きが激しいものは特に Defender による read が発生しないなどでパフォーマンスが良くなるという話なので、Ruby のビルドに使うための vcpkg のキャッシュ相当のファイルを移動した。
これ、VS 2022 に付属しているものと scoop や vcpkg のリポジトリから個別に入れたものとで挙動というか、強制的に環境変数で設定される内容が異なっていて、何を何処に設定すればいいのか、というのがめちゃくちゃわかりにくかった。結論としては、クラシック、マニフェストの両方のモードでキャッシュを共有しつつ使うには以下の2つを DevDrive のパスに設定すればよい。
なお、上記の値がない場合は $VCPKG_ROOT/archives
や $VCPKG_ROOT/downloads
が使われるようだけど、 VS 2022 に付属している vcpkg は VCPKG_ROOT ではなくて WORKPROFILE/vcpkg が使われるようなので何もわからない。
MS のプロダクトは、powershell もなんだけど、同じアプリケーションや名前なのに、添付する場所やインストール元(手動なのか、MS Store なのか)で、別アプリかってくらい動きが異なることが多いのでマジで改善してほしい。だいぶマシになってるとは思うけどだいぶ厳しい。
最近、powershell を macOS から ssh で繋いでいると、見慣れない Exception を出してから powershell プロセスが落ちるという症状に遭遇していて、vcpkg のデバッグをし始めたらめちゃくちゃ邪魔なので真面目に調べた。
https://github.com/microsoft/winget-command-not-found/issues/7
調べた、といってもエラーで検索して見つけたのが上のエントリで、PowerToys に追加された、コマンドが無かったら winget で提案するよ拡張が死んでいたということだった。上記の issue の通りアンインストールすることで現象は解決した。
Windows のエラーメッセージ、Google や Bing で検索したら「再起動してみてはどうでしょうか」というしょうもないものばかりなんだけど、GitHub にコードを公開しているものが多くなってきたこともあって、GitHub で検索すると割と答えにたどり着ける事が多いかもしれない。