问题描述
我刚安装了Ubuntu 12.04,并添加了一些回购,当我做了apt-get update
时,我错过了gpg密钥。
以下命令似乎不适用于我:
apt-get update 2> /tmp/keymissing; for key in $(grep "NO_PUBKEY" /tmp/keymissing |sed "s/.*NO_PUBKEY //"); do echo -e "\nProcessing key: $key"; gpg --keyserver subkeys.pgp.net --recv $key && sudo gpg --export --armor $key | apt-key add -; done
如何解决这个问题?
最佳解决办法
我喜欢这个解决方案,re-download是Ubuntu密钥服务器中缺少的密钥。
对于Ubuntu
就我而言
Reading package lists... Done
W: GPG error: http://ppa.launchpad.net precise
Release: The following signatures couldn't be verified because the public key is not available:
NO_PUBKEY 2EA8F35793D8809A
以下是添加错误消息中提到的缺失键的命令。
sudo apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 2EA8F35793D8809A
因此,我带着缺失的密钥2EA8F35793D8809A
,并要求keyserver.ubuntu.com将它添加到我在apt中的密钥列表中。
对于linux mint您的key server略有不同keyserver.linuxmint.com
sudo apt-key adv --recv-key --keyserver keyserver.linuxmint.com "missing key"
替代关键服务器试用keyserver.ubuntu.com
次佳解决办法
有一个名为Y PPA manager
的软件它可以帮助解决GPG密钥错误。 Y PPA manager
安装 –
sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager
安装后,启动它,然后转到advance
并选择“导入所有缺少的GPG密钥”
第三种解决办法
首先在终端中输入以下命令
sudo rm /var/lib/apt/lists/* -vf
然后通过在终端中输入以下命令来更新您的系统
sudo apt-get update && sudo apt-get upgrade
在此之后,应该没有错误,一切都应该正常工作。
第四种办法
使用apt-key adv --recv-keys
的自动下载可能不适用于防火墙。
在这种情况下,请在Web浏览器中打开Ubuntu Key Server的网页并搜索字符串0x<hexadecimal code of your missing key>
。
打开pub部分中的链接。保存密钥内容(从-----BEGIN PGP PUBLIC KEY BLOCK-----
到-----END PGP PUBLIC KEY BLOCK-----
)作为文件。
然后运行:
sudo apt-key add <file-with-saved-key>
来源:http://opensourceforgeeks.blogspot.in/2013/04/w-gpg-error-httpppalaunchpadnet-precise.html
第五种办法
对于Ubuntu 12.04 Precise:永久解决方案
在添加新存储库和更新存储库列表之后发生此错误消息。这是由于服务器的地址不再有效。所以只需将地址更改为好。
-
用文本编辑器打开文件
~/.gnupg/gpg.conf
。在终端:gedit ~/.gnupg/gpg.conf
-
然后,在这个文件中,找到下面的粗体行(第116行)(应该默认如下):[…] keyserver hkp://keys.gnupg.net#keyserver mailto:pgp-public-keys@keys.nl.pgp .net#keyserver ldap://keyserver.pgp.com
-
然后添加下面的粗线,最后给出以下结果:(将#添加到第二行,如下注释掉旧地址)[…]
keyserver http://keyserver.ubuntu.com
#
keyserver hkp://keys.gnupg.net#keyserver mailto :pgp-public-keys@keys.nl.pgp.net#keyserver ldap://keyserver.pgp.com -
保存该文件并尝试再次更新:在终端:
sudo apt-get update
第六种办法
最简单的方法是用Y PPA MAnager
sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager
从Dash打开Y PPA管理器
输入您的管理员密码
双击高级选项
单击尝试导入所有缺少的GPG密钥
点击确定修复它
第七种办法
基于nelaar回答:
sudo apt-get update 2>&1 1>/dev/null | sed -ne 's/.*NO_PUBKEY //p' |
while read key; do
echo 'Processing key:' "$key"
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys "$key"
done
该脚本将所有错误转储到一个临时文件中,然后通过它们循环导入缺少的密钥。
第八种办法
首先在终端中输入以下命令
sudo rm /var/lib/apt/lists/* -vf
然后通过在终端中输入以下命令来更新您的系统
sudo apt-get update && sudo apt-get upgrade
在此之后,应该没有错误,一切都应该正常工作。