解决 apt-get BADSIG GPG 错误的最简单方法是什么?

我经常遇到这个问题,总是不得不去谷歌寻找答案。有人有关于apt-get的BADSIG错误的永久修复方法吗?
W: GPG错误: http://download.virtualbox.org lucid 发布:以下签名无效:BADSIG 54422A4B98AB5139 Oracle Corporation(VirtualBox存档签名密钥)

1你在使用apt-cacher-ng吗? - lfaraone
4重要的是你理解APT上的GPG签名的用途,GPG签名验证存储库中的软件包来自可信源。它确保完整性和真实性。 每次你添加来自某个提供者的新存储库时,你都需要添加它的GPG密钥。 - João Pinto
请按照链接中的示例进行操作——用您问题中的BADSIG代码替换链接答案中的示例代码。 - fossfreedom
fossfreedom,我在我的系统上无法使该解决方案起作用。一直出现“--keyserver”无法理解的错误。下面Dr.Ubuntu提供的解决方案对我有效。 - Dirk
你也可以在这里看一下:http://askubuntu.com/questions/67594/unable-to-repair-packages-in-ubuntu-software-center/67603#67603 我认为你使用的命令是正确的,只是你没有使用正确的密钥。 - Bruno Pereira
是的,@portablejim,apt-key list 列出了 1024D/3E5C1192 密钥。 - Ivan
那是重要的信息,但它并没有回答问题。提问者很可能已经明白了这一点。 - Kazark
此外,您的哈希校验不匹配错误将通过以下方法解决:http://askubuntu.com/questions/93114/error-with-ubuntu-update-manager-and-sotware-center - fossfreedom
6个回答

这是最简单的解决方案:
在终端中输入以下命令:
$ sudo -i
# apt-get clean
# cd /var/lib/apt
# mv lists lists.old
# mkdir -p lists/partial
# apt-get clean
# apt-get update

来源:ubuntugeek.com

编辑:

如果错误再次发生(可能是几天/几个月后),以root身份打开Nautilus>导航到var/lib/apt>删除"lists.old"文件夹>然后打开"lists"文件夹并删除"partial"文件夹。现在,再次执行上述命令。


10这对我来说解决了一个更常见的错误——通过代理(需要网络登录的WiFi“咖啡馆”)进行互联网连接更新时,如果在更新期间被注销或忘记登录,会导致我的一些列表损坏。 - hobs
3如果qbi的答案没有帮助,但这个有帮助的话,那么实际错误是什么? - ArtOfCode
这也发生在我身上,因为:需要网络登录的WiFi“咖啡馆” - Postadelmaga
5我希望楼主能够核查这个答案! - Dave
@ArtOfCode:错误完全相同。这个答案对我很有帮助,但在网上你只能找到qbi指出的方法,而且在网上随处可见。 - 0xC0000022L
请注意,这也是VirtualBox Linux下载页面上的文档解决方案之一,位于“当遇到以下签名无效时该怎么办:BADSIG ...”部分。 - grm
遇到完全相同的错误,并成功解决了。感谢这个解决方案。 - stanleyhunk

你的错误信息中重要的部分如下,用粗体标出:

W: GPG error: http://download.virtualbox.org lucid Release: The following signatures were invalid: BADSIG 54422A4B98AB5139 Oracle Corporation (VirtualBox archive signing key)

复制粗体的内容,然后打开终端输入:

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 54422A4B98AB5139

即将使用 SHIFT + INS 粘贴您复制的数字 - 54422A4B98AB5139

您需要输入密码,密钥将会被下载并集成。


3我的错误与一个糟糕的仓库有关,而不仅仅是缺少密钥...然而,你的答案可能适用于99%的情况。 - cmcginty
4+1因为这是一个非常有用的技能,知道如何做这件事很重要。然而,它并没有解决我的问题。 - Kazark
21这对任何人真的有效吗? - Jjed
6BADSIG和NO_PUBKEY是不同的。对于BADSIG,下面的答案解决了它。我不确定我怎么会陷入这种情况,但即使导入密钥后,我在5个不同的PPA上都有BADSIG。 - mfisch
18我相信在某些危险情况下,这可能非常危险,比如有人试图做一些恶意的事情(例如中间人攻击)。不要仅仅添加来自错误消息的密钥。只添加您信任的密钥。 - gertvdijk
密钥服务器在响应密钥请求时需要多长时间?假设我正在使用公共WiFi。 - Adrian Keister
1Srinivas Gollapudi提供的解决方案应被视为更好的解决方案。如果上述方法提供了类似的结果,这并不意味着它更好或更安全。正如gertvdijk所提到的,添加密钥本身可能是一种安全风险。 - Sn3akyP3t3
对我来说很有效 - Ahmed Hamdy
1@Casey 如果它没有解决你的问题,你不应该接受这个答案。你可能想要接受一个不同的答案。 - kasperd

尝试删除该键。
sudo apt-key del 16126D3A3E5C1192

然后更新存储库
sudo apt-get update

你应该收到一个NO_PUBKEY错误而不是一个BADSIG错误。
sudo apt-key finger

不应该找到名为“Ubuntu Extras Archive Automatic Signing Key”的密钥。
现在添加密钥。
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 16126D3A3E5C1192

执行apt-key finger命令的结果应该如下所示:
pub   1024D/3E5C1192 2010-09-20
      Key fingerprint = C474 15DF F48C 0964 5B78  6094 1612 6D3A 3E5C 1192
uid                  Ubuntu Extras Archive Automatic Signing Key <ftpmaster@ubuntu.com>

如果那不起作用,试试看
apt-get clean            # Remove cached packages
cd /var/lib/apt
mv lists lists.old       # Backup mirror info
mkdir -p lists/partial   # Recreate directory structure
apt-get clean
apt-get update           # Fetch mirror info

来源:this Ubuntu 论坛帖子

我遇到了多个BADSIG错误,其中甚至包括标准的Ubuntu存档。当我删除VirtualBox密钥时,所有这些错误突然变成了NO_PUBKEY。然后当我添加了VirtualBox密钥后,所有其他存储库的错误都消失了。所以结果是一个坏密钥导致了许多其他不相关的存储库出现错误。 - Mateusz Stachowski

另一种更简单的解决BADSIG GPG错误的方法是使用一个名为Y PPA管理器的软件。
sudo add-apt-repository ppa:webupd8team/y-ppa-manager sudo apt-get update sudo apt-get install y-ppa-manager 点击"高级"选项 enter image description here 然后选择"修复所有GPG Badsig错误" enter image description here

如果在添加密钥后仍然出现此错误,请尝试以下方法:
  1. 进入您的apt-cacher-ng缓存目录并删除virtualbox条目:

    cd /var/cache/apt-cacher-ng
    sudo rm -rf download.virtualbox.org
    

找到了另一台我们可以使用的服务器:
gpg --keyserver hkp://subkeys.pgp.net --recv-keys [YOURKEYINQUESTION]
gpg --armor --export [YOURKEYINQUESTION] | sudo apt-key add -