当我在基于 Debian 的系统上更新软件包时
sudo apt-get update
我收到了该错误信息:
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 是/
ie后面的位BE1DB1F1
。
要更新密钥,请运行
sudo apt-key adv --recv-keys --keyserver YOUR_GPGKEY_HOST_DOMAIN BE1DB1F1
笔记:
- 更新密钥显然不是如果软件包维护者尚未上传新密钥,则无法工作。在这种情况下,除了联系维护者、针对您的发行版提交错误报告等之外,您几乎无能为力。
YOUR_GPGKEY_HOST_DOMAIN
表示任何可用的 GPG 密钥服务器的域名,例如keyserver.ubuntu.com
keys.openpgp.org
pgp.mit.edu
- (更新2023.2.22)SKS 密钥服务器
keys.gnupg.net
是已弃用并消失。
一行代码即可更新所有过期的键:(感谢@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 会检测到它并且不会发出任何抱怨。这通常不会发生,但有时会发生。您真正需要的是知道您需要添加的密钥的十六进制代码;一旦您知道了,一切就都好办了。
一些例子:
添加反向移植的密钥:前几行就是您想要的,尽管您需要拥有它想要的密钥。
答案3
当日期不正确时也可能会发生这种情况。
使用以下方式检查日期
date
如果配置错误,请执行以下操作设置时区和日期自动同步。
apt-get install ntp ntpdate && service ntp stop
dpkg-reconfigure tzdata
ntpdate-debian
service ntp start
答案4
我遇到了类似的错误,但问题出在系统时间上。年份是 1961 年 :)
我修正了系统日期/时间,之后无需专业人员即可更新