Lesstep
GitHub Actions・Ubuntu 26.04・2026年11月4日に確認

Ubuntu 26.04 の rpmbuild:「cp: cannot stat 'usr/*'」と v6 のパッケージ

ubuntu-latest は、2026年10月19日から11月19日にかけて Ubuntu 24.04 から 26.04 に移ります(ほかに変わること)。rpm のパッケージは、24.04 の 4.18.2 から 26.04 の 6.0.1 に上がります(11月4日の Ubuntu のパッケージの一覧)。その間の2つの変更で、Ubuntu のランナーで .rpm を作るリリースのジョブが落ちます。rpm 4.20 からは、rpmbuild がパッケージごとに専用のディレクトリでビルドします(RPM 4.20.0 のリリースノート)。rpm 6.0 からは、指定しなければ新しい v6 の形式でパッケージを作ります(RPM 6.0.0 のリリースノート)。

どう見えるか

cp: cannot stat 'usr/*': No such file or directory
error: Bad exit status from /var/tmp/rpm-tmp.XXXXXX (%install)

相対パスでファイルをコピーする spec の %install です。ファイルは前と同じディレクトリにありますが、この節が BUILD/<name>-<version>-build という空のディレクトリで始まるようになりました。もう1つの変更は、あとになってジョブの外で表に出ます。レジストリや古い rpm が v6 のファイルを受け付けない形です。ある報告では、Artifact Registry が rpm begins with wrong magic number と返しました(WendyOS #2521)。

報告のあったもの

直し方:%install では絶対パスからコピーする

自分の spec や、差し替えられる spec のテンプレートなら、ファイルを置いた上のビルドのディレクトリからコピーします:

%install
mkdir -p %{buildroot}/usr/
cp -r %{_builddir}/usr/* %{buildroot}/usr/

%{_builddir} は、rpm 4.18 でも 4.20 以降でも同じ BUILD のディレクトリです。新しいパッケージごとのディレクトリは、別の %builddir というマクロです。そのため、この形は両方のイメージで動きます。Electron Forge なら、electron-installer-redhat の resources/spec.ejs をリポジトリにコピーしてその行を直し、RPM の maker のオプションの specTemplate にそのファイルを渡します。

v4 のパッケージを作る

rpmbuild -bb --define "_rpmformat 4" app.spec

fpm なら --rpm-rpmbuild-define "_rpmformat 4" を渡します。electron-builder は10月28日に同じ指定を取り込みました(electron-builder #10472、26.x 向けは #10476)。使っている版に入るまでは、rpm.fpm から足します。RPM 6 によると、v6 のパッケージは rpm 4.14 以降で入れられますが、制限があります。v4 ならどの rpm でも読めます。古い rpm は知らないマクロを無視するので、24.04 でもこの指定は安全です。

パッケージの形式は、rpm 6 で次のように確かめます:

rpm -qp --qf '%{rpmformat}\n' dist/app.rpm

または、パッケージを作るジョブは 24.04 に残す

.rpm を作るジョブだけ runs-on: ubuntu-24.04 にすれば rpm 4.18.2 に戻り、ほかのジョブは ubuntu-latest のままにできます。GitHub が 24.04 のイメージを終えるまでは使えます。そこでビルドすれば、ネイティブのアドオンも glibc 2.43 ではなく 2.39 に対してリンクされるので、利用者が古いディストリビューションを使っているなら意味があります(「GLIBC_2.43 not found」)。

見分け方

ほかの 26.04 の失敗

失敗したジョブを IntelliJ IDEA から見るなら

Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップと一緒に IDE のツールウィンドウに並べ、いまのブランチの実行はステータスバーに出ます。読むのは無料、失敗したジョブの再実行・キャンセル・ワークフローの実行・デプロイのレビューは Pro(月 US$1.50・30日の無料試用つき)です。

JetBrains Marketplace で入れる

GitHub と GitHub Actions は GitHub, Inc. の商標、Ubuntu は Canonical Ltd. の商標、Electron は OpenJS Foundation の商標、Flutter は Google LLC の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・Canonical・OpenJS Foundation・Google・RPM のプロジェクト・JetBrains のいずれとも提携しておらず、承認も受けていません。

ほかに:「The ubuntu-latest label will migrate to Ubuntu 26」 · Ubuntu 26.04 の apt · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English