无法解决GPG错误。

我运行了sudo apt-get update命令,最后出现了以下错误:
Fetched 14,3 kB in 54s (264 B/s)
Reading package lists... Done
W: GPG error: http://archive.canonical.com saucy Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
W: GPG error: http://extras.ubuntu.com trusty Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 16126D3A3E5C1192
W: GPG error: http://dl.google.com stable Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A040830F7FAC5991
W: GPG error: http://archive.getdeb.net trusty-getdeb InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A8A515F046D7E7CF
W: GPG error: https://private-ppa.launchpad.net trusty Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY E131728675254D99
W: GPG error: http://archive.ubuntu.com trusty Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
W: GPG error: http://archive.ubuntu.com trusty-updates Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
W: GPG error: http://archive.ubuntu.com trusty-backports Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
W: GPG error: http://archive.ubuntu.com trusty-security Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
W: GPG error: http://archive.ubuntu.com trusty-proposed Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32

看起来我丢失的钥匙是:

  • 40976EAF437D05B5
  • 3B4FE6ACC0B21F32
  • 16126D3A3E5C1192
  • A040830F7FAC5991
  • A8A515F046D7E7CF
  • E131728675254D99

我看到大多数答案都说要运行:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [MISSING KEY]

我执行了那个:

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.2LrTHdOU28 --no-auto-check-trustdb --trust-model always --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyring /etc/apt/trusted.gpg.d/amandeepgrewal-notifyosdconfig.gpg --keyring /etc/apt/trusted.gpg.d/apandada1-typhoon.gpg --keyring /etc/apt/trusted.gpg.d/brightbox-ppa.gpg --keyring /etc/apt/trusted.gpg.d/chris-lea-node_js-devel.gpg --keyring /etc/apt/trusted.gpg.d/chris-lea-node_js.gpg --keyring /etc/apt/trusted.gpg.d/colingille-freshlight.gpg --keyring /etc/apt/trusted.gpg.d/debian-archive-squeeze-automatic.gpg --keyring /etc/apt/trusted.gpg.d/debian-archive-squeeze-stable.gpg --keyring /etc/apt/trusted.gpg.d/debian-archive-wheezy-automatic.gpg --keyring /etc/apt/trusted.gpg.d/debian-archive-wheezy-stable.gpg --keyring /etc/apt/trusted.gpg.d/diesch-testing.gpg --keyring /etc/apt/trusted.gpg.d/duh-golang.gpg --keyring /etc/apt/trusted.gpg.d/ferramroberto-gsharkdown.gpg --keyring /etc/apt/trusted.gpg.d/finalterm-daily.gpg --keyring /etc/apt/trusted.gpg.d/fkrull-deadsnakes.gpg --keyring /etc/apt/trusted.gpg.d/fossfreedom-byzanz.gpg --keyring /etc/apt/trusted.gpg.d/fossfreedom-packagefixes.gpg --keyring /etc/apt/trusted.gpg.d/gophers-go.gpg --keyring /etc/apt/trusted.gpg.d/leolik-leolik.gpg --keyring /etc/apt/trusted.gpg.d/linrunner-tlp.gpg --keyring /etc/apt/trusted.gpg.d/mactel-support-ppa.gpg --keyring /etc/apt/trusted.gpg.d/me-davidsansome-clementine.gpg --keyring /etc/apt/trusted.gpg.d/michael-gruz-canon-trunk.gpg --keyring /etc/apt/trusted.gpg.d/michael-gruz-canon.gpg --keyring /etc/apt/trusted.gpg.d/moka-stable.gpg --keyring /etc/apt/trusted.gpg.d/numix-ppa.gpg --keyring /etc/apt/trusted.gpg.d/nuvola-player-builders-beta.gpg --keyring /etc/apt/trusted.gpg.d/otto-kesselgulasch-gimp-edge.gpg --keyring /etc/apt/trusted.gpg.d/scopes-packagers-ppa.gpg --keyring /etc/apt/trusted.gpg.d/shutter-ppa.gpg --keyring /etc/apt/trusted.gpg.d/steam.gpg --keyring /etc/apt/trusted.gpg.d/sukso96100-budgie-desktop.gpg --keyring /etc/apt/trusted.gpg.d/ubuntu-sdk-team-ppa.gpg --keyring /etc/apt/trusted.gpg.d/ubuntu-x-swat-x-updates.gpg --keyring /etc/apt/trusted.gpg.d/vajdics-netbeans-installer.gpg --keyring /etc/apt/trusted.gpg.d/webupd8team-atom.gpg --keyring /etc/apt/trusted.gpg.d/webupd8team-brackets.gpg --keyring /etc/apt/trusted.gpg.d/webupd8team-java.gpg --keyring /etc/apt/trusted.gpg.d/webupd8team-sublime-text-3.gpg --keyring /etc/apt/trusted.gpg.d/webupd8team-themes.gpg --keyring /etc/apt/trusted.gpg.d/webupd8team-y-ppa-manager.gpg --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5
gpg: keyblock resource `/etc/apt/trusted.gpg.d/webupd8team-sublime-text-3.gpg': resource limit
gpg: keyblock resource `/etc/apt/trusted.gpg.d/webupd8team-themes.gpg': resource limit
gpg: keyblock resource `/etc/apt/trusted.gpg.d/webupd8team-y-ppa-manager.gpg': resource limit
gpg: requesting key 437D05B5 from hkp server keyserver.ubuntu.com
gpg: key 437D05B5: "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1

我可以看到unchanged: 1。 我还尝试使用y-ppa-manager,但也没有解决问题。
这些错误是由什么引起的,我该如何解决?

@Whaaaaaat 没错。我也会叫我哥哥来投票的。这样总共会有80分。:-) - Ionică Bizău
@Whaaaaaat 数学真的好难啊... 哈哈哈!:-) 不,这不是骗人的。 - Ionică Bizău
2个回答

这对我来说看起来像是一个遗漏的bug修复方法 从一个在错误报告中解决了它的用户那里:
引用: 我的解决方法是清空/etc/apt/trusted.gpg.d目录,运行apt-get update命令,然后使用apt-key adv将阻止的每个密钥手动添加到主要的/etc/apt/trusted.gpg钥匙环中,具体步骤如上所述。
因此,在您的情况下,您应该按照以下步骤操作(免责声明:无法测试):
sudo mv /etc/apt/trusted.gpg.d/ /etc/apt/trusted.gpg.d.backup
sudo mkdir /etc/apt/trusted.gpg.d
sudo chmod 755 /etc/apt/trusted.gpg.d

然后,对于每个键,您需要:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5

在这里,你可以用你所需的密钥的哈希值来替换掉井号。正如Ionică Bizău所指出的那样,可以添加多个密钥,用空格分隔。

为什么会出现这个问题

显然,gpg只能处理有限数量的密钥环,而你的安装需要更多的密钥环。可能是因为有许多备选的数据源引起的。

再次引用错误报告中的内容:

I asked about the "resource limit" message on the gnupg-users mailing list...
Based on Werner Koch's (the dev) answer...
...the secure apt related programs might be making gpg use more than the maximum number of keyrings that it can handle

3+1,似乎有效。请注意--recv-keys支持以空格分隔的多个值。因此,只需一个命令包含所有密钥。另外,请在您的回答中解释一下为什么会出现这个问题。 - Ionică Bizău
好的,谢谢你的建议!如果还有其他遗漏的地方,请告诉我。 - noleti
1非常清晰明了的回答。我使用了Y-PPA-Manager而不是手动添加所有密钥,效果非常好。现在我可以正常更新和安装软件(包括在Ubuntu软件中心和软件更新器中)。=) - Tamsyn Michael
我已经做了这个,但还是没有改变,而且出现了NO_PUBKEY。 - undefined

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [MISSING KEY] 对我来说有效。

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A040830F7FAC5991
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.cmBVPKdUNm --no-auto-check-trustdb --trust-model always --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv-keys A040830F7FAC5991
gpg: requesting key 7FAC5991 from hkp server keyserver.ubuntu.com
gpg: key 7FAC5991: public key "Google, Inc. Linux Package Signing Key <linux-packages-keymaster@google.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1

这个答案解决了我的问题! - user2821
问题明确说明了这个命令已经运行过,但并没有解决问题。 - undefined