如何修复GPG错误“NO_PUBKEY”?
我在Software Sources程序中添加了一些额外的存储库。 但是当我重新加载包数据库时,我收到如下错误:
W:GPG错误: http ://ppa.launchpad.net trusty InRelease:由于公钥不可用,无法validation以下签名:NO_PUBKEY 8BAF9A6F
根据官方的Ubuntu文档,我知道我可以在终端中使用apt-key
来修复它。 但我本来希望以图形方式做到这一点。 有没有办法在不使用终端的情况下执行此操作?
到目前为止,处理此问题的最简单方法是使用Y-PPA-Manager(现在将launchpad-getkeys
脚本与图形界面集成在一起)。
-
要安装它,首先要为此程序添加webupd8存储库:
sudo add-apt-repository ppa:webupd8team/y-ppa-manager
-
更新您的软件列表并安装Y-PPA-Manager:
sudo apt-get update sudo apt-get install y-ppa-manager
-
运行y-ppa-manager(即键入
y-ppa-manager
然后按Enter键)。 -
当出现主y-ppa-manager窗口时,单击“高级”。
-
从高级任务列表中,选择“尝试导入所有丢失的GPG密钥”,然后单击“确定”。
你完成了! 正如警告对话框所说,当您开始操作时,可能需要相当长的时间(对我来说大约需要2分钟),具体取决于您拥有的PPA数量和连接速度。
在终端中执行以下命令
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys
其中
是您缺少的存储库公钥,例如8BAF9A6F
。
然后更新
sudo apt-get update
替代方法:
sudo gpg --keyserver pgpkeys.mit.edu --recv-key sudo gpg -a --export | sudo apt-key add - sudo apt-get update
请注意,当您使用apt-key
导入这样apt-key
您告诉系统您信任要导入的密钥以对系统将使用的软件进行签名。 除非您确定钥匙确实是包装经销商的钥匙,否则不要这样做。
当您没有适当的存储库公钥时,就会发生这种情况。
要解决此问题,请使用以下命令:
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 9BDB3D89CE49EC21
从ubuntu密钥服务器检索密钥。 然后这个:
gpg --export --armor 9BDB3D89CE49EC21 | sudo apt-key add -
这会将密钥添加到apt可信密钥。
解决方案可以在这里和这里和这里找到 。
您需要获取并导入密钥。
要从PPA获取密钥,请访问PPA的Launchpad页面。 在Launchpad的每个PPA页面上,您可以在点击“有关此PPA的技术详细信息”(1)后找到此链接(2):
按照它并单击密钥ID链接(3):
保存页面,这是您的密钥文件。
现在是时候导入它了:
-
Applications > Software Center
, -
Edit > Software sources...
, - 输入你的密码,
- 转到
Authentication
选项卡,最后单击Import Key File...
- 选择保存的密钥文件,然后单击“
OK
。
而已。
apt只能处理/etc/apt/trusted.gpg.d中的40个键。 41个密钥,即使您完成添加缺失密钥的所有步骤,您也会收到“未找到公钥”的GPG错误。
检查此文件中是否有任何未使用的密钥来自您不再使用的ppa。 如果所有都在使用中,请考虑在/etc/apt/trusted.gpg.d中删除一些ppa以及相应的密钥文件。
此外,使用
sudo apt-key adv
被认为是一种安全风险,因为你“ 破坏整个安全概念,因为这不是一种以各种原因接收密钥的安全方式”(例如:hkp是一种明文协议,短的甚至长的keyid可以伪造,… ) “。 http://ubuntuforums.org/showthread.php?t=2195579
我相信添加缺失密钥的正确方法(例如1ABC2D34EF56GH78)是
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 1ABC2D34EF56GH78 gpg --export --armor 1ABC2D34EF56GH78 | sudo apt-key add -
WebUpd8 PPA中包含一个小脚本,我将链接为单个.deb下载,因此您无需添加整个PPA – 它会自动导入所有丢失的GPG密钥。
下载并安装Launchpad-getkeys (忽略其版本中的~ natty ,它适用于从Karmic到Oneiric的所有Ubuntu版本)。 安装后,打开终端并键入:
sudo launchpad-getkeys
如果你是代理的背后,事情有点复杂,所以请看更多信息
我在安装Heroku时遇到了同样的问题。 下面的链接解决了我的问题 –
http://naveenubuntu.blogspot.in/2011/08/fixing-gpg-keys-in-ubuntu.html
修复NO_PUBKEY
问题后,仍然存在以下问题
W: GPG error: xhttp://toolbelt.heroku.com ./ Release: The following signatures were invalid: BADSIG C927EBE00F1B0520 Heroku Release Engineering
为了解决这个问题,我在终端中执行了以下命令:
sudo -i apt-get clean cd /var/lib/apt mv lists lists.old mkdir -p lists/partial apt-get clean apt-get update
来源 – 解决它的链接
确保安装了apt-transport-https
:
dpkg -s apt-transport-https > /dev/null || bash -c "sudo apt-get update; sudo apt-get install apt-transport-https -y"
添加存储库:
curl https://repo.skype.com/data/SKYPE-GPG-KEY | sudo apt-key add - echo "deb [arch=amd64] https://repo.skype.com/deb stable main" | sudo tee /etc/apt/sources.list.d/skype-stable.list
安装Skype for Linux:
sudo apt-get update sudo apt-get install skypeforlinux -y
资料来源: https : //community.skype.com/t5/Linux/Skype-for-Linux-Beta-signatures-couldn-t-be-verified-because-the/td-p/4645756
更一般地说,以下方法应适用于每个存储库。 首先,在搜索引擎的最终帮助下,搜索程序提供商网站上的文本,如下所示:
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.1 (GNU/Linux) [...] -----END PGP PUBLIC KEY BLOCK-----
例如,这样的文本显示在http://deb.opera.com上 。 复制该段落,将其粘贴到您在桌面上创建的空文件中。 这导致密钥文件。
然后继续输入密钥:
- 应用程序>软件中心
- 编辑>软件来源…,输入密码
- validation选项卡,单击’导入密钥文件…’
- 选择保存的密钥文件,然后单击“确定”。
您现在可以删除以前创建的密钥文件。
好! 我最终找到了方法!
我已经测试了所有方法来修复GPG错误NO_PUBKEY并且没有任何对我有用的东西。
我删除了文件夹/etc/apt/trusted.gpg.d的全部内容
cd /etc/apt/trusted.gpg.d sudo rm -R * sudo apt-get update
我使用Y-PPA-Manager方法,因为我懒得手动创建所有pubkey(太多): http : //www.unixmen.com/fix-w-gpg-error-no_pubkey-ubuntu/
再次运行sudo apt-get update,最后一切都很棒! 坦克!
基础资料来源: https : //bugs.launchpad.net/ubuntu/+source/apt/+bug/1263540上的第17期
我在DynDNS的Updater客户端遇到了同样的问题。
原来它只是过期的密钥。
重新安装软件(从网站下载新的.deb
,然后使用软件中心重新安装)修复了问题。
错误消息供参考:
W: GPG error: http://cdn.dyn.com stable/ Release: The following signatures were invalid: KEYEXPIRED 141943.......