昨日の続き、ひたすらインストール、Ruby のビルドチェック、アンインストールを繰り返した結果、本当に必要な最小の構成は以下であることが分かった。
{
"version": "1.0",
"components": [
"Microsoft.VisualStudio.Component.Roslyn.Compiler",
"Microsoft.Component.MSBuild",
"Microsoft.VisualStudio.Component.CoreBuildTools",
"Microsoft.VisualStudio.Workload.MSBuildTools",
"Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
"Microsoft.VisualStudio.Component.VC.Redist.14.Latest",
"Microsoft.VisualStudio.Component.Windows11SDK.26100"
],
"extensions": []
}
このうち、上4つは BuildTools を入れる上で絶対インストールされるもので、下の3つが Ruby をビルドするために必要なもの。VC の再配布ランタイムとか Windows SDK は別途インストールしているなら不要。要は VC.tools.x86.x64
をインストールすれば良い。
で、上の4つが必ず入るなら指定する必要はないのでは、とインストーラのオプションを調べてみたら以下でいけた。
winget install --id Microsoft.VisualStudio.2022.BuildTools -e --override "--passive --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.VC.Redist.14.Latest --add Microsoft.VisualStudio.Component.Windows11SDK.26100"
いつも何が必要なんだっけ...とか忘れがちで数GBも使わないファイルをインストールしていたので大変に便利になった。たぶん nobu がこの後に何かを作って ruby/ruby に入れつつ、セットアップ手順を更新すると思う。
ついでに Visual Studio には vswhere
という Visual Studio のコンポーネントがどこにインストールされているか、というのを検出するプログラムが含まれているのだけど、インストールやアンインストールを繰り返すとか、2022 だけじゃなくて 2019/2017 などを複数インストールしていると「vswhere ってどこにあるのを使うのがいいんだっけ...?」と混乱しがちなので scoop で入れてそれを使うようにした。
PS V:\> vswhere.exe -products Microsoft.VisualStudio.Product.BuildTools -version 17.0 -property installationPath
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools
PS V:\> vswhere.exe -products Microsoft.VisualStudio.Product.BuildTools -version 16.0,17.0 -property installationPath
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools
-version
の使い方がめちゃくちゃ独特だけど、これで欲しいものがシュッと取り出せるので便利っぽい。vcpkg もだけど Visual Studio で入れるとどのコンポーネントに入ってるのかわからないし、全然更新されてなくて不便なことが多いので基本は scoop から入れるのが良いと思う。
引き続きマーベルの勉強。Disney+ でハルクを見た。
アベンジャーズで人間が巨大なオーガに変化して戦う、というのとそれほど自由にコントロールできるものでもない、というのは知っていたので、「なんで?」って辺りが分かったのはよかった。俳優が変わったのが時間の経過なのかはわからないけど、この作品とアベンジャーズとでめっちゃ変わっているなあ...というのが感想ではあった。
次はソーあたりを見る予定。
アンドパッドのテックブログ に 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 を潰すか再構築するかは考えようと思う。
引き続きマーベルシリーズの勉強、ということで Disney+ のトップに時系列で見るならこれ、という便利なやつがあったのでそれに従ってみていくことにした。すでにみたやつ以外だと次に見るべきはガーディアンズオブギャラクシーだった。
アベンジャーズのラスボス的なサノスやお騒がせな姉妹は元々この作品から来ているってのが分かったのがいちばんの収穫だった。グルードがやたらとデカくて、こんなのだったっけ、と思ったもののそこもちゃんとストーリーがあったので勉強になった。
自宅でマイク兼スピーカーとして使っている Anker のデバイスが Type-A - Type-C なケーブルだとふとしたタイミングで認識しなくなって、必要なタイミングで毎回抜き差しとか再起動してだるかったのでケーブルを変えてみた。
今回は Type-C - Type-C で接続することにして様子を見てみる。今のところ Zoom で定期的に監視してみてもデバイスが消えるということはない、ように見える。
シリーズ購読しているセンゴクの作者が書いている大乱の5刊が出たので読んだ。
会津征伐から反転しての関ヶ原、という内容だったけど思いの外じわじわと進行していて、他のコミックなどでよく描かれる「関ヶ原で家康が発砲して開戦!」みたいな感じとは違っているのが良い。小早川秀秋が北政所と会話しているとか、吉川や輝元の動きなども特徴的で読み応えがあった。
最終的には家康が勝つ、というのはネタバレでもなんでもなくそうなるんだけど、当時の政治と当時の権力構造から、大勝利終わり!というわけでもないというような描写に期待したい。