アンドパッドのテックブログ に Windows 向けのビルド環境を書きつつ Visual Studio のインストール方法について調べていたら、BuildTools という IDE はない VisualStudio コンポーネントをインストールできるパッケージがあるということを知った。要は Xcode でいう Command Line tools のことっぽい。
そしてこれは winget を使ってインストールもできるということで
winget install Microsoft.VisualStudio.2022.BuildTools
で Visual Studio Installer に BuildTools を追加して最低限のインストールをするというのが動くのだけど、これだけだと cl や nmake が入らないので Ruby のビルドはできない、ということでさらに調べてみたら vsconfig っていう json を食わせてインストーラにオプションをつければ必要な物を指定しつつ CUI だけで全部インストールできるらしい。というわけで
{
"version": "1.0",
"components": [
"Microsoft.VisualStudio.Component.Roslyn.Compiler",
"Microsoft.Component.MSBuild",
"Microsoft.VisualStudio.Component.CoreBuildTools",
"Microsoft.VisualStudio.Workload.MSBuildTools",
"Microsoft.VisualStudio.Component.Windows10SDK",
"Microsoft.VisualStudio.Component.VC.CoreBuildTools",
"Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
"Microsoft.VisualStudio.Component.VC.Redist.14.Latest",
"Microsoft.VisualStudio.Component.Windows11SDK.26100",
"Microsoft.VisualStudio.Component.TextTemplating",
"Microsoft.VisualStudio.Component.VC.CoreIde",
"Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core",
"Microsoft.VisualStudio.Workload.VCTools"
],
"extensions": []
}
という json を minimum.vsconfig
などとして作成して
winget install Microsoft.VisualStudio.2022.BuildTools --override "--passive --config minimum.vsconfig"
というコマンドを実行したら、無事必要なものだけがインストールできて最高だった。ただ nobu と話しているうちに、上記でもまだ不要なものが含まれてそうということだったのでもう少し精査はするかな。Windows も大変便利になったものだねえ。
Ruby CI の VM のメンテをしていて Archlinux で pacman がエラーになるなあと調べてみたら、ec2 向けの Archlinux を提供しているメンテナの方で ec2 optimize なパッケージの提供をやめたのが原因だった。
https://git.uplinklabs.net/steven/ec2-packages/commit/92db09bc47c744b942cff13b537794b43676380d
しょうがないので上記のパッケージの提供元を pacman.conf からコメントアウトしてパッケージ更新ができるか試したら、案の定 core パッケージとバージョンコンフリクトしてどうにもならない、という状態にあんってしまった。
このままパッケージ更新なしで使うか、再構築するか悩んだものの、とりあえずコンフリクトしたパッケージを強制的に上書きインストールしてみて、chkbuild 自体は動き続けているのでこのままにすることにした。どこかのタイミングで再起動したら起動しなくなりませんでした、とかそういうことがあればその時に vm を潰すか再構築するかは考えようと思う。