“GPG错误:发布:以下签名无效:BADSIG”

我在终端中运行了这个命令:

sudo apt-get update 

更新以以下错误报告结束:

 W: A error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://extras.ubuntu.com precise Release: The following signatures were invalid: BADSIG 16126D3A3E5C1192 Ubuntu Extras Archive Automatic Signing Key  W: GPG error: http://ppa.launchpad.net precise Release: The following signatures were invalid: BADSIG 4C1CBC1B69B0E2F4 Launchpad PPA for Jonathan French W: Failed to fetch http://extras.ubuntu.com/ubuntu/dists/precise/Release 

这意味着什么,为什么会发生?

试试这个:

 sudo apt-get clean sudo mv /var/lib/apt/lists /tmp sudo mkdir -p /var/lib/apt/lists/partial sudo apt-get clean sudo apt-get update 

显示此消息是因为apt-key数据库中缺少该存储库的gpg密钥。

要导入密钥,请打开终端并输入这些命令

 gpg --keyserver keyserver.ubuntu.com --recv-keys 16126D3A3E5C1192 

pgp密钥主要分布在几个密钥库中。 Ubuntu相关密钥通常位于keyserver.ubuntu.com 。 但如果失败了,你可以使用替代品。 喜欢 –

 gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16126D3A3E5C1192 

您必须使用特定键替换字母数字部分。 确保密钥是您信任的密钥 。 任何具有此密钥的存储库都可以在没有警告的情况下安装任何软件包。

如果上述成功,您将看到以下输出

 gpg: Total number processed: 1 gpg: imported: 1 

然后运行以下命令:

 gpg --export --armor 16126D3A3E5C1192 | sudo apt-key add - 

注意add后的-符号。

然后sudo apt-get update ,在此之后你将没有这样的消息。

您可以尝试我的脚本自动接收您使用的PPA的所有GPG密钥: smartupdate.sh 。

它将启动apt-get update ,然后查找所有GPG错误并接收找到的GPG签名的密钥。 在你的情况下,它将刚刚启动

 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4C1CBC1B69B0E2F4 

但是当你添加一些未签名的PPA时,手动添加GPG密钥变得很无聊。 🙂

我发现就是在做

 sudo rm -rf /var/lib/apt/lists sudo mkdir /var/lib/apt/lists 

为我工作。

以下命令为我解决了这个问题:

 sudo -i apt-get clean cd /var/lib/apt mv lists lists.old mkdir -p lists/partial apt-get clean apt-get update 

我得到了类似的错误。 但是我没有使用KEYEXPIRED获得PostgreSQL KEYEXPIRED

 W: A error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://apt.postgresql.org precise-pgdg Release: The following signatures were invalid: KEYEXPIRED 1381654177 

解决方案在这里有完美的描述,但这就是我解决它的方法:

 $ sudo apt-key list | grep -B1 PostgreSQL $ sudo apt-key del ACCC4CF8 $ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - 

现在$ sudo apt-get update将完美运行!

这个提示(来自actionparsnip )为我工作:

尝试:

 sudo fuser -vvv /var/lib/dpkg/lock sudo rm /var/lib/apt/lists/lock sudo cp -arf /var/lib/dpkg /var/lib/dpkg.backup sudo cp /var/lib/dpkg/status-old /var/lib/dpkg/status sudo cp /var/lib/dpkg/available-old /var/lib/dpkg/available sudo rm -rf /var/lib/dpkg/updates/* sudo rm -rf /var/lib/apt/lists sudo rm /var/cache/apt/*.bin sudo mkdir /var/lib/apt/lists sudo mkdir /var/lib/apt/lists/partial LANG=C;sudo apt-get clean LANG=C;sudo apt-get autoclean LANG=C;sudo apt-get --purge autoremove LANG=C;sudo apt-get update -o APT::Cache-Limit=25165824 sudo dpkg --clear-avail sudo dpkg --configure -a LANG=C;sudo apt-get -f install LANG=C;sudo apt-get --fix-missing install LANG=C;sudo apt-get update -o APT::Cache-Limit=25165824 && sudo apt-get dist-upgrade 

在发现:
https://answers.launchpad.net/ubuntu/+source/update-manager/+question/194077

这可能是由于HTTP代理的缓存问题。 如果你有像我这样的路线上的其中一个,你可以要求Apt要求它暂时绕过缓存:

 sudo apt-get update -o Acquire::http::No-Cache=True 

您可以使用launchpad-getkeys来解决此问题。 打开终端并输入:

 sudo apt-get install launchpad-getkeys sudo launchpad-getkeys 

然后

 sudo apt-get update