如何解决本地镜像上的“释放文件已过期”问题


59

我有一个本地镜像(使用debmirror创建),apt-get update几天后运行时,我得到了:

E: Release file expired, ignoring file:/home/wena/.repo_bin/dists/sid/Release (invalid since 14h 31min 45s)

我该如何解决?


4
安全警告:这个问题需要解决。但是,最好将镜子固定或指向工作中的镜子。我更改为指向httpredir.debian.org/debian,它再次开始工作。
ctrl-alt-delor

切换到其他镜像即可。
帕特里克·穆特维里

2
什么是“更好”取决于您的目标。如果您的目标是从Debian获得最新的软件包,那么更改镜像是正确的选择。如果您的目标是使用本地的旧镜像,以便可以在Internet不可用或价格昂贵的地方继续工作,那么关闭到期检查是正确的解决方案。如果您的目标是出于漏洞分类的原因将存储库更新到特定的较旧版本,那么再次关闭到期检查是正确的解决方案。
–plugwash

确实,我在将Debian Archive用于无法更新的Debian Wheezy系统时收到了此消息。
JucaPirama

Answers:


98

将此添加到命令:

-o Acquire::Check-Valid-Until=false

例如:

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

11
这行得通,但是对为什么这样做的一些解释会很有用。
Faheem Mitha 2014年

4
这将停用检查过期数字签名的检查,因此apt还将接受旧的和过期的发行密钥。
咧嘴笑

6
安全警告:此答案是变通办法(按要求)。但是,最好将镜子固定或指向工作中的镜子。我更改为指向httpredir.debian.org/debian,它再次开始工作。
ctrl-alt-delor

3
对于已经过时的发行版(如说debian 6),您无法轻松地切换到该版本,您需要使用archives.debian.org立即获取任何软件包
Marcin Orlowski 18'8-8-23

35

如果您不关心此检查,那么无论使用哪个镜像,都只需在其中创建文件/etc/apt/apt.conf.d/(例如10no--check-valid-until,将其命名为),然后将选项直接放在其中即可:

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

在此之后,您将再也不会受到上述警告的困扰。


1
尽管变通办法本身并不是最佳解决方案,但我有一个我不关心的开发箱,因此这种烦恼只会让我感到烦恼。我可以在Ansible中使用此答案,因为在使用ansible_pkg_mgr时找不到任何将可接受的答案添加到操作模块的方法。
jia103 '16

1
一个命令:echo "Acquire::Check-Valid-Until false;" | tee -a /etc/apt/apt.conf.d/10-nocheckvalid
rubo77

11

发行文件具有有效至直到的条目,例如 Valid-Until: Thu, 07 Oct 2010 08:17:56 UTC

如果发行文件不再有效,则应再次运行debmirror来检查存储库中是否有任何更改。更改将是发布文件,您将对其具有新的有效性。

您可以使用crontab条目轻松地自动执行此操作。


谢谢你 在问之前,我应该查看该文件的内部。奇怪的是,这是新事物吗?以前(一次)没有发生。
tshepang

我目前并不经常使用debian,但也许他们只是将发布文件周期更改为较短的日期……
echox 2010年

3

那里的某些镜像可能具有陈旧的文件。这最近发生在我身上,并且还与我正在使用的缓存服务器(apt-cacher-ng)绑定,该服务器试图通过将同一档案的存储库重定向到单个实体来节省带宽(在我的情况下,如果是匈牙利的镜子)。例如,通过德国镜像直接更新可以。尝试更换您正在使用的镜子。如果您使用的是apt-cacher-ng,则需要在更改以下文件内容的那一行中做一些事情:

  • / etc / apt-cacher-ng / backends_debian
  • / etc / apt-cacher-ng / backends_debvol

之后,您还应该重新启动apt-cacher-ng才能使更改生效。


请注意,我要的是一种解决方法,而不是为什么会发生这种情况(尽管很好的答案)。在这种情况下,我知道有一个过时的存储库。
tshepang

3

如果您的系统日期/时间错误,也会发生这种情况。我通过在更新之前更正本地时间来解决此问题。


@AnthonyGeoghegan对我有用。这是最后唯一有效的方法。
Martin Vseticka

1
@MartinVseticka你是对的。在系统将其标记为审核之后,当我在一个审阅队列中遇到此答案时,我发表了该评论。最初的措词(在迈克尔编辑之前)没有多大用处。
Anthony Geoghegan


0

我删除/var/lib/apt/*并重新运行apt-get update,它有效!


我这样做是为了解决一个完全不同的错误,它适用于那个错误。此错误是完全不相关的。
撷取

0

镜像可能没有过期。

相反,您系统上的其他内容可能会混乱。尝试这个:


1)暂时从/etc/apt/sources.list或中注释掉相关行/etc/apt/source.list.d/*。例如,在注释掉以下两行之后,我的错误消失了(结果是这些存档暂时不用于重新加载):

deb http://security.debian.org/ stretch/updates non-free contrib main
deb http://mirrors.ocf.berkeley.edu/debian/ stretch-updates main contrib non-free

2)打开突触并重新加载,或者可能sudo apt-get update也可以。

3)重新注释这些行。

4)重复步骤2。


为我修复了此问题。我猜我的apt缓存有一个错误的日期。

从btrfs快照还原我的/(根)和/ var文件系统以帮助解决出现的软件包安装问题后,发生了我的问题。我收到的确切错误消息是:

http://mirrors.ocf.berkeley.edu/debian/dists/stretch-updates/InRelease的发布文件 已过期(自5d 4h 50min 18s起无效)。此存储库的更新将不会应用。http://security.debian.org/dists/stretch/updates/InRelease的发布文件 已过期(自2d 2h 52min 43s起无效)。此存储库的更新将不会应用。

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.