ubuntu-latest(Ubuntu 26.04)の apt:「has no installation candidate」と「Unable to locate package」
ubuntu-latest は、2026年10月19日から11月19日にかけて Ubuntu 24.04 から 26.04 に移ります(ほかに変わること)。24.04 にあったパッケージのいくつかは、26.04 で名前が変わったか、無くなりました。そのため先週まで通っていた apt-get install のステップが、数秒で終了コード 100 になります。エラーにはパッケージの名前が出て、そのすぐ上の行に代わりの名前が出ていることがよくあります。
2つのメッセージ
「Unable to locate package」は、26.04 にその名前のパッケージが無いという意味です。「has no installation candidate」は、ほかのパッケージがその名前を参照しているか提供しているので apt は名前を知っているが、その名前で入れられるパッケージが無い、という意味です。同じステップで両方が出ることもあります(utf8.h #152):
E: Unable to locate package gcc-10 E: Package 'g++-10' has no installation candidate ##[error]Process completed with exit code 100.
名前が変わったパッケージなら、apt は代わりの名前を言います(promptvault-lite #352):
Package webkit2gtk-driver is not available, but is referred to by another package. However the following packages replace it: webkitgtk-webdriver E: Package 'webkit2gtk-driver' has no installation candidate
仮想パッケージになった名前なら、提供するパッケージを並べ、どれも選びません(afactory #554):
Package qemu-user-static is a virtual package provided by: qemu-user-binfmt-hwe 1:10.2.1+ds-1ubuntu4.4 qemu-user-binfmt 1:10.2.1+ds-1ubuntu3.3 E: Package 'qemu-user-static' has no installation candidate
apt は入れられない最初の名前で止まります。1つ直すと、次の実行で同じ一覧の別の名前で止まることがあります。
名前が変わったパッケージ
Ubuntu のアーカイブの noble(24.04)と resolute(26.04)で確かめました:
qemu-user-static→qemu-userとqemu-user-binfmt。26.04 のqemu-userは静的にリンクした版で、プログラムの名前は-staticの付かないqemu-aarch64・qemu-riscv64などです。qemu-user-binfmtはそれをカーネルに登録し、qemu-userも一緒に入れます。次に落ちるのは、qemu-aarch64-staticを名前で呼ぶスクリプトです(go-crdt/collab #254)。qemu-kvm→qemu-system-x86。こちらは 24.04 にもあります(crc-github-action #24)。webkit2gtk-driver→webkitgtk-webdriver。Tauri などの WebKitGTK のアプリの WebDriver のテストで使います。24.04 にあるのは古い名前だけです。liblz4-tool→lz4。こちらは 24.04 にもあります(ripgrep #3565)。libgdk-pixbuf2.0-0→libgdk-pixbuf-2.0-0。WeasyPrint のためによく入れます。新しい名前は 24.04 にもあります(libsocial-sdk #125)。libxml2→libxml2-16、libxmlsec1とlibxmlsec1-openssl→libxmlsec1-1とlibxmlsec1-openssl1。libxml2-devとlibxmlsec1-devはどちらでも同じ名前で、ライブラリも一緒に入れます(open-vtb #218)。libicu74→libicu78。古い Playwright がこれを求めます:Ubuntu 26.04 の Playwright。gcc-10とg++-10は無くなりました。gcc-11〜gcc-15は apt にまだあります。clang-14〜clang-16とclang-format-14〜clang-format-16は無くなりました。17 以降は apt にまだあります(2ship2harkinian #1997)。
最初から入っているコンパイラーも変わりました。入れずに呼んでいるジョブは「command not found」で落ちることがあります。24.04 のイメージは GCC 12・13・14 と Clang 16・17・18、26.04 のイメージは GCC 13・14・15 と Clang 20・21・22 です(Ubuntu 26.04 のイメージの readme)。
どちらのイメージでも通るインストールのステップ
11月19日までは、同じジョブがどちらのイメージにも当たります。新しい名前が 24.04 にもあるもの(qemu-system-x86・lz4・libgdk-pixbuf-2.0-0・-dev のパッケージ・gcc-14・clang-18)は、その名前に変えます。そうでないものは、リリースで分けます:
- name: Install QEMU
run: |
. /etc/os-release
if [ "$VERSION_ID" = "26.04" ]; then
sudo apt-get install -y qemu-user qemu-user-binfmt
else
sudo apt-get install -y qemu-user-static
fi
qemu-aarch64-static を名前で呼ぶスクリプトは、26.04 では -static の無い名前に変えます。QEMU が Docker のマルチプラットフォームのビルドのためだけなら、docker/setup-qemu-action はエミュレーターをコンテナのイメージから登録するので、apt をまったく使いません。
フォーマットの確認は別です。clang-format は版ごとに少しずつ違う整形をするので、14 から 18 に移ると、誰も触っていないコードで確認が落ちることがあります。版は apt でなく PyPI から入れて保ちます(pipx はどちらのイメージにもあります):
- run: pipx install clang-format==14.0.6
そのあとは clang-format-14 でなく clang-format を呼びます。
新しい名前を自分で探す
runs-on: ubuntu-26.04 のジョブを動かして、apt に聞きます:
apt-cache policy qemu-user-static apt-cache showpkg qemu-user-static apt-cache search --names-only 'webkit.*driver'
showpkg は、仮想の名前を提供するパッケージを「Reverse Provides」に並べます。packages.ubuntu.com で、ディストリビューションを 26.04 のコード名の resolute にして探すこともできます。ライブラリのパッケージは名前にライブラリの版を持つので(libicu78・libxml2-16・libxmlsec1-1)リリースごとに変わり、-dev のパッケージはたいてい同じ名前のままです。
または、当面はジョブを固定する
runs-on: ubuntu-24.04 にすると古い名前に戻ります。clang-format の確認でそうした例が files-desktop #54 です。GitHub が 24.04 を引退させるまでは持つので、戻ってくるためのメモを残しておきます。どちらにしても「Set up job」を見ます。Runner Image のグループに ubuntu-26.04 か ubuntu-24.04 と出ます。11月19日までは、やり直しが 24.04 に当たって通ることがあるので、やり直しで緑になっても何も証明されません。
26.04 のほかの失敗
- 基本のコマンドのほとんどが uutils になったので、名前を変えた
sleepのコピーは「coreutils: unknown program」で落ちます:「coreutils: unknown program」と uutils のほかの違い。 sudoが sudo-rs になったので、sudo -Eが変数を渡さなくなりました:Ubuntu 26.04 の sudo -E。- 1.61.0 より前の Playwright はインストールで落ちます:Ubuntu 26.04 の Playwright。
- イメージのビルド中の「No space left on device」:26.04 の Docker 29 は、イメージを containerd のストアに置きます(「No space left on device」)。
失敗したジョブを 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. の商標、Docker は Docker, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・Canonical・Docker・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:「The ubuntu-latest label will migrate to Ubuntu 26」 · Ubuntu 26.04 の Playwright · 「No space left on device」 · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English