トップ «前の日記(2025/05/28 (水) ) 最新 次の日記(2025/05/30 (金) )» 編集 RSS feed

HsbtDiary


2025/05/29 (木) [長年日記]

winget を使って Ruby をビルドするのに必要最小限の VisualStudio をインストールする

アンドパッドのテックブログ に 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 も大変便利になったものだねえ。

AWS の Archlinux の更新ができなくなった

Ruby CI の VM のメンテをしていて Archlinux で pacman がエラーになるなあと調べてみたら、ec2 向けの Archlinux を提供しているメンテナの方で ec2 optimize なパッケージの提供をやめたのが原因だった。

https://git.uplinklabs.net/steven/ec2-packages/commit/92db09bc47c744b942cff13b537794b43676380d

しょうがないので上記のパッケージの提供元を pacman.conf からコメントアウトしてパッケージ更新ができるか試したら、案の定 core パッケージとバージョンコンフリクトしてどうにもならない、という状態にあんってしまった。

このままパッケージ更新なしで使うか、再構築するか悩んだものの、とりあえずコンフリクトしたパッケージを強制的に上書きインストールしてみて、chkbuild 自体は動き続けているのでこのままにすることにした。どこかのタイミングで再起動したら起動しなくなりませんでした、とかそういうことがあればその時に vm を潰すか再構築するかは考えようと思う。