如何修复丢失的GPG密钥?
我刚刚安装了Ubuntu 12.04并添加了一些repo,当我做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
如何解决这个问题?
我喜欢这个解决方案,从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
并要求keyserver.ubuntu.com将它添加到我在apt中的密钥列表中。
对于linux薄荷
您的密钥服务器与keyserver.linuxmint.com
略有不同
sudo apt-key adv --recv-key --keyserver keyserver.linuxmint.com "missing key"
尝试替代密钥服务器
keyserver.ubuntu.com
有一个名为Y PPA manager
的软件它可以帮助修复GPG密钥错误。
Y PPA经理
安装 –
sudo add-apt-repository ppa:webupd8team/y-ppa-manager sudo apt-get update sudo apt-get install y-ppa-manager
安装后启动它,然后继续advance
并选择“导入所有丢失的GPG密钥”
使用apt-key adv --recv-keys
的自动下载可能无法在防火墙后面运行。
在这种情况下,在Web浏览器中打开Ubuntu密钥服务器的网页,然后搜索0x
的字符串0x
。
打开pub部分中的链接。 保存关键内容(从-----BEGIN PGP PUBLIC KEY BLOCK-----
到-----END PGP PUBLIC KEY BLOCK-----
)作为文件。
然后运行:
sudo apt-key add
资料来源: http : //opensourceforgeeks.blogspot.in/2013/04/w-gpg-error-httpppalaunchpadnet-precise.html
首先在终端中输入以下命令
sudo rm /var/lib/apt/lists/* -vf
然后在终端中输入以下命令来更新系统
sudo apt-get update && sudo apt-get upgrade
在此之后应该没有错误,一切都应该正常。
对于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 Manager
输入您的管理员密码
双击高级选项
单击“尝试导入所有丢失的GPG密钥”
单击“确定”进行修复
根据尼拉答案:
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
在此之后应该没有错误,一切都应该正常。
我遇到了同样的问题,通过添加一个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
在“软件和更新”的“身份validation”选项卡上,单击“恢复默认值”
安装y-ppa管理器以导入所有丢失的GPG密钥
sudo add-apt-repository ppa:webupd8team/y-ppa-manager sudo apt-get update sudo apt-get install y-ppa-manager
参考 :
- 尝试Vocal,一个专为基础操作系统设计的播客管理器~Web Upd8:Ubuntu / Linux博客#comment-1981323351
我想在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
对我有用的是首先删除密钥然后重新安装。 为此,我做了以下事情:
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
如果您有这样的事情:
# 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 adv
和aptitude update
运行wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
当我使用德语设置安装12.04时,我遇到此问题。 然后,存储库列表默认使用德语镜像存储库。 如果是这种情况,您可以编辑存储库列表并将所有德语镜像存储库更改为Ubuntu标准存储库。
您可以使用以下方法:
sudo nano /etc/apt/sources.list
使用Alt – r在Nano中搜索和替换
搜索(替换): /de.
替换为: /
全部替换(按A )
保存文件Ctrl – x
然后在终端中输入以下命令来更新系统:
sudo apt-get update && sudo apt-get upgrade
在此之后应该没有错误,一切都应该正常。
你可以使用repogen。 您将获得所有指令,包括GPG密钥validation。 以下是链接。