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)。
報告のあったもの
electron-installer-redhatを使う Electron Forge の RPM の maker:spec のテンプレートがusr/*をいまのディレクトリからの相対パスでコピーします。3.4.0 と 4.0.0 で落ちます(wcpos/electron #556・opengrep-playground #88)。直しのプルリクエストは開いたままです(electron-installer-redhat #347)。同じエラーは Fedora 41 で最初に報告されていました(#343)。- Flutter の
flutter_app_packager(FastForge):作られた%installでcp: cannot stat '<app>/*'(flutter_google_datastore #85)。 - fpm を通る electron-builder の
rpmのターゲット:あるリリースのジョブがrpmbuild failed (exit code 1)だけを出して落ちました。electron-builder と fpm は、24.04 で通ったときと同じ版でした(claudius #332)。rpm のターゲットが落ちるとジョブ全体が落ちるので、同じジョブの AppImage と deb もアップロードされません。
直し方:%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」)。
見分け方
rpmbuild --versionは、26.04 ではRPM version 6.0.1、24.04 では 4.18.2 と出ます。- 落ちた行が
%installにあって相対パスを名指ししているなら、ビルドのディレクトリの問題です。%filesでの「File not found」は、ファイルの一覧の別の問題です。 - 「Set up job」の Runner Image の欄にイメージが出ます。11月19日までは、再実行が 24.04 に当たって通ることがあるので、再実行が緑でも何も確かめたことになりません。
ほかの 26.04 の失敗
- Ubuntu 26.04 の「does not have a Release file」:apt.llvm.org には
resolute向けの clang 17〜20 が無く、ondrej/php の PPA には何も無いので、apt-get updateが終了コード 100 で止まります。clang-17は Ubuntu から入れ、PHP は packages.sury.org に移します。 - Ubuntu 26.04 の「conda: command not found」:イメージに Miniconda が無く
CONDAが空なので、GitHub の雛形のワークフローや Azure Pipelines の Microsoft の手順のように$CONDA/binを PATH に足すステップでは conda が見つかりません。setup-miniconda か Miniforge で入れます。 - ansible-test 2.22 と devel の「mount -o remount,rw /sys/fs/cgroup/ && pkill sleep」returned exit status 1:24.04 と 26.04 のイメージの 7.0 の azure のカーネルでは、既定のテスト用コンテナーが起動できないことが多く、再実行でもめったに直りません。そのジョブは
ubuntu-22.04で。 - 「MongoDB cannot start: Linux kernel versions 6.19 and newer」:mongo:8.0 と mongo:8.3 は 24.04 と 26.04 のイメージの 7.0 の azure のカーネルを 7.0.0 と読んで、起動した直後に終わります。mongo:9.0 を使うか、8.0.37 と 8.3.16 までは
ubuntu-22.04で。 - 「Unable to locate package linux-modules-extra-7.0.0-1017-azure」:24.04 と 26.04 のイメージの 7.0 の azure のカーネル向けには、Ubuntu が extras のパッケージを出していません。
vcanなどのモジュールはすでに入っているlinux-modulesにあるので、インストールを飛ばしてmodprobeを実行します。 - GitHub の Ubuntu のランナーの syscalls:sys_enter_* の BPF:24.04 と 26.04 のイメージのカーネル 7.0.0-1017-azure では、これらのプログラムが1つの CPU でしか動かないので、eBPF のテストがエラーなしにイベントを失います。
ubuntu-22.04は当たりません。 - Ubuntu 26.04 の PyCQA/bandit-action:アクションが Python 3.8(v1.0.1 は 3.9)を変える入力なしにセットアップし、setup-python の 26.04 向けのビルドは 3.10 からです。Bandit を自分のステップで動かします。
- Ubuntu 26.04 の wg-quick の「Permission denied」:新しい AppArmor のプロファイルで、
wg-quickとwgは設定とキーのファイルを/etc/wireguard/の下でしか読めないので、ワークスペースのwg0.confはsudoでも落ちます。 - Ubuntu 26.04 の setup-swift:
swift-actions/setup-swiftの v2 は「Version "26.04" of Ubuntu is not supported」で止まり、swift.org の 26.04 向けのビルドは Swift 6.4.0 からです。イメージの Swift 6.4.1 か、swiftのコンテナを使います。 - Ubuntu 26.04 の Docker-in-Docker:古い iptables のモジュールが読み込まれていないので、
iptables-legacyを使うコンテナの中の dockerd(dev container の docker-in-docker 機能の:2や:3など)が「can't initialize iptables table `nat'」で落ちます。機能を:4に上げるか、ランナーでモジュールを読み込みます。 - Ubuntu 26.04 の pg_dump 18:イメージと apt の PostgreSQL が 18 なので、ダンプが
SET transaction_timeout = 0で始まり、PostgreSQL 16 のサービスが「unrecognized configuration parameter」で断ります。 - Ubuntu 26.04 で WebdriverIO のすべてのワーカーが「Error: write EINVAL」:v9 はワーカーを
xvfb-runから起動し、26.04 のものは IPC のチャネルを引き継ぎません。9.33.1 で直りましたが、npm のlatestのタグはまだそこを指していません。 - Ubuntu 26.04 の Docker で Postgres が起動しない:7.0.0-42 などの新しいカーネルはコンテナのプロセスを
docker-default//&unconfinedとして動かすので、プロセスどうしでシグナルを送れず、gosuが CPU 100% で止まります。いまのところ報告はセルフホストのランナーです。 - Ubuntu 26.04 でビルドしたあとの「version `GLIBC_2.43' not found」:glibc が 2.43 なので、そこでビルドしたバイナリは
GLIBC_2.42やGLIBC_2.43を求めて Ubuntu 24.04・Debian 13 やそれより古い環境で起動しないことがあります。リリースは古いイメージでビルドし、CI で下限を確かめます。 - Ubuntu 26.04 の「cannot enable executable stack」:glibc 2.43 は、実行可能なスタックを求めるライブラリを
dlopenで読み込まないので、Julia 1.10.0〜1.10.8・conda-forge の TensorFlow 2.19・一部の MEX ファイルが「Invalid argument」で落ちます。 - Ubuntu 26.04 の libpcre3 と libpcre3-dev:Ubuntu 26.04 には PCRE1 が無いので、apt から
libpcre3-devが消え、24.04 向けのプログラムはlibpcre.so.3を読み込めません。 - Ubuntu 26.04 の GCC 15 で通らなくなった C と C++ のビルド:既定の gcc が 13 から 15 に上がるので、C は C23 としてコンパイルされ、古い警告の6つがエラーになり、C++ のヘッダーは
<cstdint>を読み込んでくれなくなります。 - Ubuntu 26.04 の apt:名前が変わった・無くなったパッケージ。
- 「coreutils: unknown program」:基本のコマンドのほとんどが uutils です。
失敗したジョブを IntelliJ IDEA から見るなら
Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップと一緒に IDE のツールウィンドウに並べ、いまのブランチの実行はステータスバーに出ます。読むのは無料、失敗したジョブの再実行・キャンセル・ワークフローの実行・デプロイのレビューは Pro(月 US$1.50・30日の無料試用つき)です。
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