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

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)で確かめました:

最初から入っているコンパイラーも変わりました。入れずに呼んでいるジョブは「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 のほかの失敗

失敗したジョブを 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