use*_*345 195 debian repository
我使用 docker 镜像作为我自己开发的基础,在其 Dockerfile 中添加 jessie backports 存储库并使用它来安装依赖项。此映像使用以下命令添加存储库:
echo "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list
Run Code Online (Sandbox Code Playgroud)
问题是从 backports 存储库中获取包现在失败并出现以下错误(以前可以使用):
W: Failed to fetch
http://ftp.debian.org/debian/dists/jessie-backports/main/binary-amd64/Packages
404 Not Found
W: Failed to fetch
http://deb.debian.org/debian/dists/jessie-updates/main/binary-amd64/Packages
404 Not Found
Run Code Online (Sandbox Code Playgroud)
我查看了那台服务器,那里确实不存在这些路径。
我试图在 Debian backports 站点上弄清楚这个特定的存储库是否仍然可用,但我没有发现任何迹象表明它已被弃用或类似的东西。
这是存储库的临时问题,还是 jessie-backports 存储库不再可用?如果这不是临时问题,在不升级到较新的 Debian 稳定版本的情况下,我有哪些选择可以使用这个或等效的存储库?
Ste*_*itt 231
Wheezy 和 Jessie 最近从镜像网络中删除,因此如果您想继续获取 Jessie 向后移植,则需要archive.debian.org改用:
deb [check-valid-until=no] http://archive.debian.org/debian jessie-backports main
Run Code Online (Sandbox Code Playgroud)
(需要禁用有效性检查,因为存储库不再更新。Jessieapt不支持该check-valid-until标志,有关详细信息,请参阅inostia 的答案,以及此答案中的配置摘要。)
该jessie-updates库已被删除:所有的更新都被合并到主库中,并且不会有进一步的非安全更新。因此jessie-updates,需要删除对insources.list或sources.list.dfiles 的任何引用。在 LTS 支持的架构上,安全存储库中将继续提供安全更新,直到 2020 年 6 月 30 日。
由于您正在构建容器映像,因此我强烈建议将其改为基于 Debian 9 (Stretch)。要继续使用 Debian 8 (Jessie),您的存储库最终应该看起来像
deb http://cdn-fastly.deb.debian.org/debian/ jessie main
deb-src http://cdn-fastly.deb.debian.org/debian/ jessie main
deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main
deb http://archive.debian.org/debian jessie-backports main
deb-src http://archive.debian.org/debian jessie-backports main
Run Code Online (Sandbox Code Playgroud)
(没有jessie-updates存储库)。
您还需要禁用有效性检查/etc/apt/apt.conf(这将适用于所有存储库):
Acquire::Check-Valid-Until "false";
Run Code Online (Sandbox Code Playgroud)
小智 51
在尝试了@inostia 和 @Stephen Kitt 建议的解决方案后,我仍然收到以下错误:
W: Failed to fetch http://deb.debian.org/debian/dists/jessie-updates/main/binary-amd64/Packages 404 Not Found
E: Some index files failed to download. They have been ignored, or old ones used instead.
Run Code Online (Sandbox Code Playgroud)
我发现它可以通过deb http://deb.debian.org/debian jessie-updates main从/etc/apt/sources.list.
我在我的 Dockerfile 中得到了以下代码片段:
RUN echo "deb [check-valid-until=no] http://cdn-fastly.deb.debian.org/debian jessie main" > /etc/apt/sources.list.d/jessie.list
RUN echo "deb [check-valid-until=no] http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/jessie-backports.list
RUN sed -i '/deb http:\/\/deb.debian.org\/debian jessie-updates main/d' /etc/apt/sources.list
RUN apt-get -o Acquire::Check-Valid-Until=false update
Run Code Online (Sandbox Code Playgroud)
ino*_*tia 36
这发生在我配置一个使用 Debian“Jessie”的 Vagrant 机器上。
按照Stephen Kitt 的回答,切换到 archive.debian.org 对我有用,但我必须将它添加到/etc/apt/sources.list.d/jessie-backports.list,而不是/etc/apt/sources.list.
我将以下行添加到provision.sh:
echo "deb http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/jessie-backports.list
Run Code Online (Sandbox Code Playgroud)
然后我也遇到了一个安全错误 running apt-get update。
按照如何解决本地镜像上的“发布文件过期”问题,这修复了该错误:
apt-get -o Acquire::Check-Valid-Until=false update
Run Code Online (Sandbox Code Playgroud)
或者,要永久禁用检查,请将其添加到provision.sh:
echo "Acquire::Check-Valid-Until \"false\";" > /etc/apt/apt.conf.d/100disablechecks
Run Code Online (Sandbox Code Playgroud)
然后,您可以在apt没有-o标志的情况下运行所有命令。
小智 5
对于那些使用 NodeJS 和较旧的 docker 镜像基础的人。我有一些冻结的图像,其中包含用于编译额外库的旧源代码。
上下文:如果您想在 docker 构建期间安装 python,则在构建映像期间(过去 24 小时内)会遇到此问题,因为它无法在 docker 构建期间获取依赖项。
我尝试了这篇文章中的存档路径建议,但无法通过 404。(也来自今天的 archive.debian.org 位置)
解决方案:我最终切换到最新的节点容器版本(已经预装了 python 库),并更新了 json 包中的一些库(现在还包括以前需要 pythyon 的二进制库),使问题变得过时。
最后,更新容器堆栈的基础映像(节点:最新)似乎是解决问题的最直接途径。
警惕包含二进制依赖项的陈旧映像堆栈,它们可能需要一段时间才能更新核心操作系统层。
| 归档时间: |
|
| 查看次数: |
169357 次 |
| 最近记录: |