无法获取jessie反向端口存储库


155

我将docker映像用作自己开发的基础,该开发将jessie backports存储库添加到其Dockerfile中,并使用该映像安装依赖项。该图像使用以下命令添加存储库:

echo "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list

问题在于,现在从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

我查看了该服务器,而这些路径确实不存在。

我试图在Debian backports站点上确定该特定存储库是否仍然可用,但没有发现任何迹象表明该存储库已被弃用或类似的东西。

这是存储库的临时问题,还是jessie-backports存储库不再可用?如果这不是暂时的问题,那么在不升级到较新的Debian稳定版本的情况下,我必须使用哪些选项来使用此存储库或等效存储库?



这与超级用户上的debian中的apt-get update失败本质上是相同的问题。
CVn

Answers:


180

Wheezy和Jessie最近已从镜像网络中删除,因此,如果您要继续获取Jessie反向端口,则需要使用archive.debian.org

deb [check-valid-until=no] http://archive.debian.org/debian jessie-backports main

(由于不再更新存储库,因此需要禁用有效性检查。Jessie'sapt不支持该check-valid-until标志,有关详细信息,请参见inostia的答案,并且在此答案中进一步介绍配置摘要。)

jessie-updates存储库已被删除:所有更新都已与主存储库合并,并且不会再有其他非安全更新。因此jessie-updates,需要删除对in sources.listsources.list.dfile的所有引用。 2020年6月30日,将继续在安全存储库中基于LTS支持的体系结构提供安全更新。

由于您正在构建容器映像,因此我强烈建议您将其基于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

(没有jessie-updates存储库)。

您还需要在/etc/apt/apt.conf其中禁用有效性检查(这将适用于所有存储库):

Acquire::Check-Valid-Until "false";

1
抱歉,我的回答可能还不是很清楚。我给的那条线只用于反向移植。jessie-updates不再存在,因此您应该将其全部删除,并且Jessie安全更新仍在进行中security.debian.org
Stephen Kitt

2
@不,安全更新是在上提供的security.debian.org,而不是通过反向移植或更新提供的。不会再有非LTS稳定更新,因此jessie-updates在主镜像网络上将不再有用,并且也将不再有任何反向端口,因此也是如此jessie-backports
Stephen Kitt

4
不适合我:```E:archive.debian.org/debian/dists/jessie-backports/InRelease的发行文件已过期(自34d 20h 7min 12s起无效)。此存储库的更新将不会应用。```
Avi Kivity

2
已经发现,随后的apt命令似乎也需要-o Acquire::Check-Valid-Until=false(每个unix.stackexchange.com/a/45973/186565),以避免到期错误。
sumitsu

2
@sumitsu谢谢,设置也apt.conf应该起作用(请参阅我的更新)。
Stephen Kitt

42

在尝试了@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.

我想通了,它可以通过删除行来解决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

1
我遇到了与您相同的问题,您的代码段对我有用!
cafemike

1
我不得不柚木sed部分,因为在我的情况下,docker映像(postgres)使用的是httpredir.debian.org而不是deb.debian.org。
harrybvp

1
谢谢!!!Debian jessie更改后,我已经努力了两天来修复我的Dockerfile,我粘贴了您的代码片段,然后一切又恢复了。
wpjmurray

抱歉,但仍然是同样的问题....
user1722245

5
这是sed为我成功的命令的更新版本:sed -i '/deb http:\/\/\(deb\|httpredir\).debian.org\/debian jessie.* main/d' /etc/apt/sources.list
speedplane

26

这发生在我预配使用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

然后,我也遇到了一个安全错误apt-get update

以下如何解决本地镜像上的“文件已释放”问题,此问题已解决

apt-get -o Acquire::Check-Valid-Until=false update

另外,要永久禁用检查,请将其添加到provision.sh

echo "Acquire::Check-Valid-Until \"false\";" > /etc/apt/apt.conf.d/100disablechecks

然后,您可以运行所有apt不带-o标志的命令。


1
禁用将应用于所有存储库的有效性检查是否危险?
Maxime Lafarie

4

对于那些使用带有较旧docker镜像基础的NodeJS的用户。我有一些冻结的图像,这些图像具有这些较旧的源,用于编译额外的库。

上下文:如果要在docker构建期间安装python,则在镜像构建期间(过去24小时内)会遇到此问题,因为在docker构建期间无法获取依赖项。

我尝试了这篇文章中的存档路径建议,但无法超越404。(也来自今天的archive.debian.org位置)

解决方案:我最终切换到节点的最新容器版本(已经预安装了python库),并更新了json包中的一些库(现在还包括以前想要pythyon的二进制库)使问题变得过时了。

最后,更新容器堆栈的基础图像(节点:最新)似乎是解决问题的最直接方法。

注意带有二进制依赖性的陈旧映像栈,它们可能需要一段时间才能更新核心操作系统层。


嗨,格伦,感谢您的发帖。我认为我在dockerfile中遇到了同样的问题,因为我有“运行apt-get更新-y && apt-get安装管理程序python python-dev curl -y --force-yes”。我正在使用FROM节点:6.11.2,该怎么办才能克服这个问题?
亚伦

1
对于Docker Node映像,一种替代方法是使用这些-stretch映像:node:<version>-stretch
lukeaus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.