sudo apt-get update
在基于debian的系统上更新我的软件包时,我得到了该错误消息:Reading package lists... Done
W: GPG error: ftp://ftp.fr.debian.org stable/non-US Release:
The following signatures were invalid: KEYEXPIRED 1138684904
该如何解决?
#1 楼
要查找任何过期的存储库密钥及其ID,请按以下方式使用apt-key
:LANG=C apt-key list | grep expired
您将得到与以下内容类似的结果:
pub 4096R/BE1DB1F1 2011-03-29 [expired: 2014-03-28]
密钥ID是
/
后面的位,在这种情况下即BE1DB1F1
。要更新密钥,请运行
sudo apt-key adv --recv-keys --keyserver keys.gnupg.net BE1DB1F1
注意:如果软件包维护者尚未上传新密钥,则更新密钥显然将不起作用。在这种情况下,除了联系维护人员,针对您的发行版提交错误外,您几乎无能为力。
一个班轮可以更新所有过期的密钥:(感谢@ryanpcmcquen)
for K in $(apt-key list | grep expired | cut -d'/' -f2 | cut -d' ' -f1); do sudo apt-key adv --recv-keys --keyserver keys.gnupg.net $K; done
#2 楼
您需要获取新密钥并添加它,这时apt将检测到它并且不会抱怨。这通常不应该发生,但有时会发生。您真正需要的是知道您需要添加的密钥的十六进制代码。一旦有了它,就从那里走下坡路了。一些示例:
添加反向移植密钥:前几行就是,尽管您需要拥有它想要的密钥。
在Ubuntu中添加密钥
#3 楼
在有关SecureAPT的Debian Wiki上,我发现我应该从/etc/apt/sources.list中删除包含non-us
的行。 我确实做到了,并且奏效了。
评论
这可能在特定情况下可行,但不是通用解决方案
– kynan
2015年11月4日在20:52
#4 楼
我有类似的错误,但是问题出在系统时间上。那是1961年:)我更正了系统日期/时间,此后无需专业人士即可进行更新
#5 楼
如果日期不正确,也可能会发生这种情况。使用
检查日期。
date
如果配置错误,请执行以下操作来设置您的日期时区和日期自动同步。
apt-get install ntp ntpdate && service ntp stop
dpkg-reconfigure tzdata
ntpdate-debian
service ntp start
#6 楼
一个更简单的oneliner:for key in $(sudo apt-key list | awk -v FS='[ /:]+' '/expire[sd]/ {print }'); do sudo apt-key adv --recv-keys --keyserver keys.gnupg.net $key; done
我只是觉得,如果您多次使用
cut
之类的东西,那么会有更好的工具。 (此外,我是根据其他问题创建的。)#7 楼
造成此错误的可能性极小,但偶尔也可能是,如果两次添加相同的密钥且具有不同的到期日期,则会导致该错误。您可能会知道这样做使该答案与您相关。当使用自己的密钥托管自己的存储库时,可能会像我这样发生。如果您在密钥即将到期时,只需延长其寿命而不是更改它,并且如果您使用预播安装了原始密钥,而使用deb软件包安装了更新的密钥,则旧密钥将位于
/etc/apt/trusted.gpg
中,而新密钥将位于/etc/apt/trusted.gpg.d/
中一个最终在apt-key
下作为一个单独的文件结束。旧密钥将遮盖新密钥,而gpg --keyring /etc/apt/trusted.gpg --delete-keys <keyid>
将完全忽略该密钥。通过运行q4312079q删除旧密钥,您的新密钥将被检测到。这是一个非标准的转角配置,但是我希望我的回答可以避免造成一些混乱,以防其他人由于以下原因遇到此问题和我一样。
#8 楼
您无需做任何事情。只是警告,您可以从W:
前缀中看到它。评论
如果他不需要做任何事情,那么整个Repos的Signing系统将毫无用处。这是一项安全功能,在生产环境中,密钥完整性对于安全性至关重要。
– Broco
18 Mar 15'在17:41
评论
这对我不起作用,在更新密钥的命令之后,密钥仍然过期。
–卡尔·福纳(Karl Forner)
2014年11月6日12:20
@KarlForner添加密钥成功了吗?
– kynan
2014年11月7日10:18
是的,它成功了。
–卡尔·福纳(Karl Forner)
2014年11月7日14:08
一个衬里:对于$(apt键列表| grep已过期| cut -d'/'-f2 | cut -d''-f1)中的K;做sudo apt-key adv --recv-keys --keyserver keys.gnupg.net $ K;完成
–ryanpcmcquen
16 Dec 11'在0:47
只是关于grep部分的提示:“ expired”是i18ned,因此根据LANG *设置可能不起作用,例如对于设置pl_PL.UTF-8,必须将“ expired”更改为“wygasł”,以使其成为一个-班轮工作。
– Cromax
17年4月25日在16:30