安装软件包时找不到 404

Jua*_*eni 5 apt 16.04

我有一个到目前为止一直运行良好的脚本,突然我收到以下消息:

Get:81 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 python-software-properties all 0.96.20.7 [20.7 kB]
Get:82 http://archive.ubuntu.com/ubuntu xenial/main amd64 python3-pycurl amd64 7.43.0-1ubuntu1 [42.3 kB]
Get:83 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python3-software-properties all 0.96.20.7 [20.3 kB]
Get:84 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 software-properties-common all 0.96.20.7 [9452 B]
Get:85 http://archive.ubuntu.com/ubuntu xenial/main amd64 xz-utils amd64 5.1.1alpha+20120614-2ubuntu2 [78.8 kB]
Err:86 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 unattended-upgrades all 0.90ubuntu0.7
  404  Not Found [IP: 91.189.88.161 80]
Fetched 23.7 MB in 1s (14.8 MB/s)
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/p/python3.5/libpython3.5-minimal_3.5.2-2ubuntu0~16.04.2_amd64.deb  404  Not Found [IP: 91.189.88.161 80]

E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/p/python3.5/python3.5-minimal_3.5.2-2ubuntu0~16.04.2_amd64.deb  404  Not Found [IP: 91.189.88.161 80]

E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/p/python3.5/libpython3.5-stdlib_3.5.2-2ubuntu0~16.04.2_amd64.deb  404  Not Found [IP: 91.189.88.161 80]

E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/p/python3.5/python3.5_3.5.2-2ubuntu0~16.04.2_amd64.deb  404  Not Found [IP: 91.189.88.161 80]

E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/libi/libidn/libidn11_1.32-3ubuntu1.1_amd64.deb  404  Not Found [IP: 91.189.88.161 80]

E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/u/unattended-upgrades/unattended-upgrades_0.90ubuntu0.7_all.deb  404  Not Found [IP: 91.189.88.161 80]

E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
The command '/bin/sh -c apt-get -y install software-properties-common python-software-properties' returned a non-zero code: 100
Run Code Online (Sandbox Code Playgroud)

似乎在运行时:

apt-get -y install software-properties-common python-software-properties
Run Code Online (Sandbox Code Playgroud)

某些服务器已关闭。我怎样才能避免这种依赖性?这是持续集成服务器的一部分,我希望将来避免这些问题。

注意:我sudo apt update之前跑过.. 这实际上是 Dockerfile 的一部分:

FROM ubuntu:16.04
RUN apt-get update
RUN apt-get -y install software-properties-common python-software-properties
RUN apt-get -y install ca-certificates curl
RUN apt-get -y install build-essential git sudo
Run Code Online (Sandbox Code Playgroud)

构建容器在第二行失败。

Jua*_*eni 7

根据docker 最佳实践,我应该将更新和安装放在同一 RUN 行中。这样缓存将被正确更新。

在这些变化之后,事情正在起作用。

  • 它有点不同,因为 Docker 是按行缓存的。因此有些行可能不会再次执行。 (3认同)
  • `apt-get update` 一行一行接着下一行的 `apt-get install X` 完全等同于单行 `apt-get update && sudo apt-get install X`。如果此更改后问题明显消失,则问题实际上是间歇性不同步的包存储库。按照当前包存储库的管理方式,这些情况肯定会偶尔发生。 (2认同)
  • 我相信@JuanLeni 是正确的。它们并不等同,并且“apt-get update”可能会获得不需要的缓存。 (2认同)
  • 谢谢,经过近一个小时的浏览并想知道如何在没有任何更改的情况下停止工作,您的解决方案是唯一对我有用的解决方案。 (2认同)