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)
- ステップかジョブに時間の上限があると、ログは
azure.archive.ubuntu.comからのGet:の行で止まり、そのあとに##[error]The operation was canceled.が出ます。 Err:やIgn:の行は無く、やり直しもしません。もう一度実行すると、たいていは通ります。apt-get updateも止まることがあります。libtmux/libtmux-go #109(10月31日)では、apt は Azure のミラーを離れ(Ign)、https://archive.ubuntu.com/ubuntuに移ったあと、Get:5 https://archive.ubuntu.com/ubuntu noble-security InRelease [126 kB]から先を何も出さず、10分のtimeout-minutesで5つのジョブが取り消されました(runner-images #15040 も同じ)。
apt が次へ移らない理由
- イメージは
/etc/apt/apt-mirrors.txtに3つのミラーを書き、Ubuntu のソースをmirror+file:/etc/apt/apt-mirrors.txtに向けています(actions/runner-images のconfigure-apt-sources.sh):http://azure.archive.ubuntu.com/ubuntu/ priority:1 https://archive.ubuntu.com/ubuntu/ priority:2 https://security.ubuntu.com/ubuntu/ priority:3
/etc/apt/apt.conf.d/zz-retriesにAcquire::Retries "1"とAcquire::http::Timeout "15"(https も同じ)を入れているので、応えなくなったミラーは15秒で外れます(configure-apt.sh)。22.04 と 24.04 の Arm64 のイメージは 3 と 30 のままです。こちらは ports.ubuntu.com から取り、それは一覧に入っていません。- このタイムアウトは、データが届かないときにしか効きません。ゆっくりでも送り続けるミラーでは決して効かず、apt には最低の速さを決める設定も無いので、
archive.ubuntu.comを試すことはありません(#14823)。 - 2026年10月26日と27日には、
azure.archive.ubuntu.comの westus と westus3 のエンドポイントが、開発者が試したどのランナーの地域からも毎秒 40〜75 kB でしかアーカイブを送らず、ほかの地域のエンドポイントは毎秒 20〜90 MB でした。そこでは 24.04 のランナーも同じでした(runner-images #15142)。GitHub は原因をミラーとし、10月27日に Canonical が正常に戻したと伝えました。それでも10月31日から11月3日の公開の issue には、Azure のミラーで、またはそこを離れたあとに止まる apt のステップの報告が続いていて、#14823 もまだ開いています。
ホスト名を置き換えても効かない理由
/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 のミラーを使わない
apt-get updateの前に同じsedでその行を消せば、すべてarchive.ubuntu.comから取ります。正常な日の Azure のミラーの速さは失います。uv の開発者の1人は、自分たちが入れた回避策の1つに「Azure のミラーをまるごと使わないこと」を挙げています(#14823)。.debファイルをパッケージの一覧をキーにして Actions のキャッシュに置けば、ミラーに行くのはキャッシュに無いときだけです。#14823 の報告者はそうしていて、ファイルごとにパッケージの索引の SHA256 と照らしています。
見分け方
- この問題:
Get:の行がazure.archive.ubuntu.comを指し、一覧は速くアーカイブは遅く、Err:が無く、もう一度実行すると通り、ubuntu-24.04にしても変わりません。 - 応えないミラー:
Could not connect to azure.archive.ubuntu.com:80 ... connection timed out。こちらは15秒のタイムアウトが効き、apt は一覧の次のミラーへ移ります。 E: Unable to locate packageやhas no installation candidate:Ubuntu 26.04 で名前が変わったパッケージです。ubuntu-latest(Ubuntu 26.04)の apt を見てください。- 「The operation was canceled.」だけで、apt のステップが見当たらない:その5つの理由。
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日の無料試用つき)です。
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