Lesstep
GitHub Actions・Ubuntu ランナー・2026年11月5日に確認

GitHub ホストの Ubuntu ランナーで apt-get が何分も止まる:遅い azure.archive.ubuntu.com と、apt が次のミラーへ移らない理由

GitHub ホストの Ubuntu ランナーでは、apt はまず azure.archive.ubuntu.com に取りに行きます。そのミラーがアーカイブを毎秒数十 kB でしか送らないと、apt はそこから取り続けます。ランナーのイメージのタイムアウトは、何も届かないときにしか効かないからです。いつもは1分で終わるインストールが、timeout-minutes でジョブが取り消されるまで続きます。イメージの開発者は runner-images #14823(2026年9月30日から未解決)で追っています。原因はミラーで、イメージではありません。ubuntu-24.04 でも ubuntu-26.04 でも同じように起きます。

ログの見え方

パッケージの一覧はすぐに届き、アーカイブは届きません(RustCrypto/crypto-bigint・ubuntu-26.04・2026年10月25日):

Fetched 3043 kB in 0s (10.8 MB/s)
...
Need to get 21.3 MB of archives.
Get:2 http://azure.archive.ubuntu.com/ubuntu resolute-updates/main amd64v3 libc6-dev-i386 amd64 2.43-2ubuntu2.4 [1605 kB]
...
Fetched 21.3 MB in 8min 11s (43.3 kB/s)

apt が次へ移らない理由

ホスト名を置き換えても効かない理由

/etc/apt/sources.list と sources.list.d に sed -i 's|azure\.archive\.ubuntu\.com|archive.ubuntu.com|g' をかけるステップは、このランナーでは何も変えません。ソースにはホスト名が無く、ミラーの一覧が書いてあるだけだからです(snapotter-hq/SnapOtter #1808)。直すのは /etc/apt/apt-mirrors.txt のほうです。

次へ移るステップ

#15142 での開発者の答えに、自分のパッケージを入れたものです:

- name: Install system packages
  timeout-minutes: 6
  run: |
    pkgs="ffmpeg imagemagick"
    sudo apt-get update
    if ! timeout 90 sudo apt-get install --yes --download-only $pkgs; then
      sudo sed -i '/azure\.archive\.ubuntu\.com/d' /etc/apt/apt-mirrors.txt
      sudo apt-get install --yes --download-only $pkgs
    fi
    sudo apt-get install --yes $pkgs

最初のダウンロードには90秒を与えます。終わらなければ、ミラーの一覧から Azure の行を消し、archive.ubuntu.com からもう一度ダウンロードします。最後の行が、ダウンロードしたものをインストールします。timeout-minutes はステップ全体の歯止めです。90 は自分のパッケージに合わせて決めます。正常なミラーは毎秒数十 MB で送るので、たいていのインストールはずっと短く済みます。

止まる apt-get update には、1回ごとに上限を付けてやり直します:

    for i in 1 2 3; do
      timeout 120 sudo apt-get update && break
      [ "$i" = 3 ] && exit 1
    done

または Azure のミラーを使わない

見分け方

Azure Pipelines でも同じ

Azure Pipelines の Microsoft ホストのエージェントも、同じ actions/runner-images のリポジトリから作られています。Ubuntu のジョブのログに Get:1 file:/etc/apt/apt-mirrors.txt Mirrorlist があれば、同じステップがそのまま使えます。timeout-minutes の代わりに、ステップに timeoutInMinutes を付けます。

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

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

JetBrains Marketplace で入れる

GitHub と GitHub Actions は GitHub, Inc. の商標、Ubuntu は Canonical Ltd. の商標、Azure と Azure Pipelines は Microsoft Corporation の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・Canonical・Microsoft・JetBrains のいずれとも提携しておらず、承認も受けていません。

ほかに:Ubuntu 26.04 の apt:名前が変わったパッケージと消えたパッケージ · 「The job has exceeded the maximum execution time」 · 「The ubuntu-latest label will migrate to Ubuntu 26」 · English