在基于 debian 的系统上更新我的软件包时
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
我收到了那个错误信息:
Reading package lists... Done
W: GPG error: ftp://ftp.fr.debian.org stable/non-US Release:
The following signatures were invalid: KEYEXPIRED 1138684904
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能解决这个问题?
kyn*_*nan 122
要查找任何过期的存储库密钥及其 ID,请使用apt-key
以下方法:
LANG=C apt-key list | grep expired
Run Code Online (Sandbox Code Playgroud)
您将得到类似于以下内容的结果:
pub 4096R/BE1DB1F1 2011-03-29 [expired: 2014-03-28]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,密钥 ID 是/
ie之后的位BE1DB1F1
。
要更新密钥,请运行
sudo apt-key adv --recv-keys --keyserver keys.gnupg.net BE1DB1F1
Run Code Online (Sandbox Code Playgroud)
注意:更新的关键显然不是,如果软件包的维护者并没有(还)上传一个新的关键工作。在这种情况下,除了联系维护者、针对您的发行版提交错误等之外,您几乎无能为力。
一个用于更新所有过期密钥的班轮:(感谢@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
Run Code Online (Sandbox Code Playgroud)
您需要获取较新的密钥并添加它,此时 apt 将检测到它而不是抱怨。这通常不应该发生,但有时会发生。您真正需要的是知道您需要添加的密钥的十六进制代码;一旦你有了它,它就会从那里走下坡路。
一些例子:
为 backports 添加密钥:前几行是您想要的,尽管您需要拥有它想要的密钥。
在关于 SecureAPT 的 Debian Wiki上,我发现我应该删除包含non-us
/etc/apt/sources.list 的行。
我确实这么做了并且成功了。
归档时间: |
|
查看次数: |
64473 次 |
最近记录: |