我刚刚安装了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


如何解决此问题?

评论

如果对此问题的答案包括为什么首先发生此错误以及将来如何避免此错误,那将是很好的选择。

我使用Y-ppa-manager解决了我的问题。感谢Ashu的解决方案!

带有屏幕截图的详细解决方案opensourceforgeeks.blogspot.in/2013/04/…

相关:askubuntu.com/q/13065/178596

#1 楼

我喜欢这个解决方案,从Ubuntu密钥服务器重新下载缺少的密钥。

对于Ubuntu



UBUNTU:在UBUNTU中修复GPG密钥

在我的情况下

 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并询问密钥服务器.ubuntu.com将其添加到我在apt中拥有的键列表中。

对于linux mint
您的密钥服务器略有不同keyserver.linuxmint.com

sudo apt-key adv --recv-key --keyserver keyserver.linuxmint.com "missing key"


尝试使用其他密钥服务器keyserver.ubuntu.com

评论


askubuntu.com/a/136735/10998对我不起作用。

–nelaaro
2012年5月23日在9:21

这样做有任何安全隐患吗?我基本上只是通过http下载公钥,对吗?

– Ajedi32
2014年5月20日在21:10

@iamcreasy,为了向Ubuntu安装证明您正在安装的软件包是安全的并且没有恶意软件,每个软件包都由ubuntu密钥服务器签名。因此,安装程序会检查您正在安装的软件包是否来自受信任的经过验证的来源。我还没有找到任何关于它的非常好的文档,但这可能会帮助[gpg doc](help.ubuntu.com/community/…)

–nelaaro
2015年1月19日在5:45



我创建了一个函数,可以添加所需的密钥adkeys(){sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys“ $ 1”;}并删除重复的或有问题的密钥,我可以这样做: grep -ril“模式” / etc / apt |须藤xargs rm -f

–SergioAraujo
2015年6月21日,3:15



我建议--keyserver ha.pool.sks-keyservers.net。它是密钥服务器的高可用性池,极大地增加了获取所需密钥的机会。

–罗宾像鸟一样
16 Dec 19'2:01

#2 楼

有一个名为Y PPA manager的软件,它可以帮助修复GPG密钥错误。YPPA管理器

要安装-

sudo add-apt-repository ppa:webupd8team/y-ppa-manager  
sudo apt-get update  
sudo apt-get install y-ppa-manager    


安装后启动它,然后转到advance并选择“导入所有缺少的GPG密钥”

评论


您必须在此命令中添加sudo!须藤apt-get ...

– Fih
2012年5月3日22:30



这对我也很有效,Y PPA Manager简洁易用的界面让我印象深刻,这是一个不错的发现,谢谢Ashu。

– CoalaWeb
2013年9月3日19:56

我按照你说的做了,但是什么也没发生。我的意思是我无法在菜单中的任何位置找到该应用程序。

–克里斯蒂安娜·尼古拉(Cristiana Nicolae)
13-10-11在20:18

@CristianaNicolae安装后,可以在“应用程序”>“系统工具”下找到Y PPA Manager。

–阿舒
13-10-13在4:02

抱歉,Ashu,我已经检查并再次检查。我仍然在那里看不到它。它似乎安装在系统中的某个位置,但是由于某些原因,它没有显示在菜单中的任何位置。

–克里斯蒂安娜·尼古拉(Cristiana Nicolae)
13-10-13在8:38

#3 楼

使用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

#4 楼

首先在终端中输入以下命令

 sudo rm /var/lib/apt/lists/* -vf


,然后在终端中输入以下命令更新系统

 sudo apt-get update && sudo apt-get upgrade


此后应该没有错误并且一切都应该正常工作。

评论


谢谢。解决我的问题的方法要简单得多:在上面键入我的命令之前,键入sudo su

– Fih
2012年5月14日18:14



虽然这会为您提供帮助,但sudo su绝不是正确的方法-在这种情况下,sudo -s可以满足您的需求。

–冈伯特
2013年1月16日17:06

我认为您的意思是sudo rm / var / lib / apt / lists / * -rf(选项“ r”而不是“ v”)

–Oliboy50
2015年4月19日在11:44



同时使用sudo和rm是危险的。同时使用rm和*是危险的。在同一命令中使用这三个命令,鲨鱼会咬伤您或您的文件。

– JB。和莫妮卡
15年7月8日在19:15

这对我不起作用。

–WiSaGaN
15年8月24日在16:07

#5 楼

对于Ubuntu 12.04 Precise:在添加新存储库并更新存储库列表后,针对此错误消息的永久解决方案

。这是由于服务器的地址不再有效。因此,只需将地址更改为一个好地址即可。



使用文本编辑器打开文件~/.gnupg/gpg.conf

在终端:gedit ~/.gnupg/gpg.conf


,然后在此文件中找到以下粗线(第116行)(默认为
后):


[ ...]密钥服务器hkp://keys.gnupg.net
#密钥服务器mailto:pgp-public-keys@keys.nl.pgp.net
#密钥服务器ldap://keyserver.pgp.com



,然后添加以下粗体行,最后给出以下结果:

(将#添加为第二行请按照以下步骤注释掉旧地址)


[...] keyserver http://keyserver.ubuntu.com #密钥服务器hkp://keys.gnupg.net
#密钥服务器mailto:pgp-public-keys @ keys.nl.pgp.net
#keyserver ldap://keyserver.pgp.com



保存文件并尝试再次更新:

在终端中:sudo apt-get update



#6 楼

基于问题的答案:

 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
 


该脚本将所有错误转储到临时文件中,然后然后遍历它们,导入丢失的密钥。

#7 楼

最简单的方法是使用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 Manager

输入管理员密码

双击高级选项

单击“尝试导入所有丢失的GPG密钥”

单击“确定”进行修复

#8 楼

对我有用的是先删除密钥,然后重新安装。为此,我执行了以下操作:

root@ > ~: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 630239CC130E1A7FD81A27B140976EAF437D05B5




删除
root@ > ~: sudo apt-key del 630239CC130E1A7FD81A27B140976EAF437D05B5


然后,通过重新安装键入

root@ > ~: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 630239CC130E1A7FD81A27B140976EAF437D05B5


#9 楼

我遇到了同样的问题,通过添加ppa(ppa:nathandyer/vocal-stable),它破坏了我的存储库。 Web Upd8的作者指导我如何解决此问题,这是他的工作方法。
请备份您的.gpg键,以防万一出问题。一个将在其中存放备份文件的文件夹。


mkdir ~/gpg-backups
备份/etc/apt/trusted.gpg.d/文件夹中的所有文件。


sudo cp /etc/apt/trusted.gpg.d/*.* ~/gpg-backups/


现在,我们将删除所有.gpg键。


sudo rm /etc/apt/trusted.gpg.d/


sudo cp /etc/apt/trustdb.gpg ~/gpg-backups/


sudo rm /etc/apt/trustdb.gpg




在“软件和更新”中的“身份验证”选项卡上,单击“恢复默认值

安装y-ppa管理器以导入所有丢失的GPG密钥
sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager

参考:

尝试Vocal,专为基本OS设计的播客管理器〜Web Upd8:Ubuntu / Linux博客# comment-1981323351


评论


一行似乎包含错误,必须为sudo rm /etc/apt/trusted.gpg.d/*。无法在EOL处省略*,因为在未指定-r选项的情况下无法使用rm删除非空目录。-啊,您可以通过sudo mv / etc /行杀死2只鸟,只用1块石头apt / trustdb.gpg〜/ gpg-backups /。因为如果移动文件,则此后无需再管理源文件。

–syntaxerror
2015年9月13日在16:55



#10 楼

我想在bash脚本中自动修复此类错误。对于任何有兴趣的人,这都可以解决问题:

sudo apt-get update 2> /tmp/keymissing
if [ -f /tmp/keymissing ]
then
    for key in $(grep "NO_PUBKEY" /tmp/keymissing |sed "s/.*NO_PUBKEY //")
        do 
        echo -e "\nProcessing key: $key"
        sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $key
        sudo apt-get update
    done
    rm /tmp/keymissing
fi


#11 楼

如果您有这样的事情:

# aptitude update
...
Ign http://archive.canonical.com wily/partner Translation-en_US
Fetched 422 kB in 3s (130 kB/s)
W: GPG error: http://ubuntu.volia.net wily InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32


首先尝试:

# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32


last的输出命令可以是:

gpg: keyblock resource `/etc/apt/trusted.gpg.d/webupd8team_ubuntu_experiments.gpg': resource limit
gpg: keyblock resource `/etc/apt/trusted.gpg.d/webupd8team_ubuntu_gthumb.gpg': resource limit


因此,您需要转到/etc/apt/trusted.gpg.d/并删除未使用的密钥,然后重复apt-key advaptitude update

#12 楼

运行wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -

#13 楼

最简单的方法是:

sudo apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com

或者如果在代理后面:

sudo apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com --keyserver-options http-proxy=http://myproxy:123

(将myproxy:123替换为您的实际代理人,当然)

#14 楼

当我使用德语设置安装12.04时,此问题发生在我身上。然后,默认情况下,存储库列表将使用德语镜像存储库。在这种情况下,您可以编辑存储库列表并将所有德语镜像存储库更改为Ubuntu标准存储库。

可以使用以下方法:

sudo nano /etc/apt/sources.list


使用Alt-r在Nano中搜索和替换

搜索(替换):/de.
替换为:/

全部替换(按A键)

保存文件Ctrl-x

然后在终端中输入以下命令来更新系统:

sudo apt-get update && sudo apt-get upgrade


此后应该没有错误,一切都应该正常工作。

评论


这并不能真正回答OP的问题,特别是考虑到他们没有使用源代码。

–凯文·鲍恩(Kevin Bowen)
13年4月17日在10:24