GPG 校验签名出错 NO_PUBKEY的解决办法

今天更新时出现如下错误:

W: 校验签名出错。此仓库未被更新,仍然使用以前的索引文件。GPG 错误:http://deb.opera.com stable Release: 由于没有公钥,无法验证下列签名: NO_PUBKEY A2019EA84E7532C8

W: 无法下载 http://deb.opera.com/opera/dists/stable/Release

W: 有一些索引文件不能下载,它们可能被忽略了,也可能转而使用了旧的索引文件。

这里由于使用了非官方源导致的GPG error,如上面的opera 更新源。
解决办法:

1
2
gpg --recv-keys KEY-ID
gpg --armor --export  KEY-ID | apt-key add -

如上面:
此处没有必要用sudo来运行,把公钥导入当前用户即可,使用了反而有可能提示错误:

gpg: WARNING: unsafe ownership on configuration file `/home/username/.gnupg/gpg.conf’

公钥导入成功后会有如下提示:

1
2
3
4
5
6
hacklog@hacklog-laptop:~$ gpg --recv-keys A2019EA84E7532C8
gpg: 下载密钥‘4E7532C8’,从 hkp 服务器 keys.gnupg.net
gpg: 密钥 4E7532C8:公钥“Opera Software Archive Automatic Signing Key 2011 <packager @opera.com>”已导入
gpg: 没有找到任何绝对信任的密钥
gpg: 合计被处理的数量:1
gpg:               已导入:1

注意apt-key add要用特权用户来运行才可以,也就是要用sudo来运行,不然有如下错误提示:

1
2
3
4
hacklog@hacklog-laptop:~$ gpg --armor --export 4E7532C8 | apt-key add -
gpg: 找不到可写的钥匙环:eof
gpg: 读取‘-’时出错:常规错误
gpg: import from `-' failed: 常规错误

用正确的方法导入后会提示OK:

1
2
hacklog@hacklog-laptop:~$ gpg --armor --export 4E7532C8 | sudo apt-key add -
OK

参考:
http://mark.nellemann.nu/2006/03/22/apt-get_no-pubkey/
http://www.thegeekstuff.com/2009/05/apt-get-update-how-to-solve-no-public-key-available/
http://www.linuxidc.com/Linux/2010-03/25187.htm

更多
5 Responses Post a comment
  1. 无冷

    发现你好久不更新了,不过你这里的东西,我还没有消耗完 :lol:

Leave a Reply

Note: You may use basic HTML in your comments. Your email address will not be published.

Subscribe to this comment feed via RSS