当我在 apt-get 更新后收到 KEYEXPIRED 错误消息时,我该怎么办?

当我在 apt-get 更新后收到 KEYEXPIRED 错误消息时,我该怎么办?

当我在基于 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 年 :)

我修正了系统日期/时间,之后无需专业人员即可更新

相关内容