背景
- Ubuntu イメージをベースとした Dockerfile 内でパッケージのインストールを行っていた
- あるパッケージだけインストールに失敗する
-
Undetermined Error
というエラーメッセージ
-
現象
error_log
Step 8/15 : RUN apt-get update && apt-get install -y --fix-missing curl locales git openssh-server
:
Get:101 http://archive.ubuntu.com/ubuntu bionic/main amd64 libwrap0 amd64 7.6.q-27 [46.3 kB]
Err:101 http://archive.ubuntu.com/ubuntu bionic/main amd64 libwrap0 amd64 7.6.q-27
Undetermined Error [IP: 91.189.88.142 80]
Unable to correct missing packages.
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/t/tcp-wrappers/libwrap0_7.6.q-27_amd64.deb Undetermined Error [IP: 91.189.88.142 80]
E: Aborting install.
原因と対策
フェッチに失敗している URL
http://archive.ubuntu.com/ubuntu/pool/main/t/tcp-wrappers/libwrap0_7.6.q-27_amd64.deb
をブラウザから叩いたら問題なくダウンロードできた (2020/07 現在)。よって、リンク切れなどではなさそう。
調べてみると
- セキュリティソフトの問題
- Ubuntu のバージョンの問題 (bug?)
など様々な要因が挙げられるようだが、今回のケースにおける原因はわからなかった。
ひとまず対応として、リポジトリ URL を以下のようにミラーサイトへ切り替えることで問題解消できた。
apt-getの直前に追加
sed -i'' 's/archive.ubuntu.com/jp.archive.ubuntu.com/' /etc/apt/sources.list
副次効果
通信が海を飛び越えなくなったことで、インストール速度が大幅にアップした。特に今回のようなインストールするパッケージが 100 を超える場合には効果が高かった。
とはいえ、 jp.archive.ubuntu.com は日本語版の Ubuntu における標準的なリポジトリらしいので、タイミングによってはここも負荷増大で重くなることがあるらしい。よって、日本国内のミラーサイトを用いるほうがより効果的とのこと。
参考
- https://midorigame201845.hateblo.jp/entry/2018/06/13/003238
- http://blog.shun-ichiro.com/howto/vagrant-docker-undetermined-error/
- https://dockerquestions.com/2019/12/29/failed-to-fetch-http-archive-ubuntu-com-undetermined-error-docker-run-apt-install/
- https://ykore.hatenablog.com/entry/2018/02/16/181532