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


88

我在终端中运行了以下命令:

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 <ftpmaster@ubuntu.com>

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  

这是什么意思,为什么会发生?


4
首次安装12.04时,我看到了类似的问题。之后,我将“软件来源”从印度的软件经理更改为另一台服务器。现在我没有看到这个问题。如果您使用的是印度服务器,请进行更改并告知我们。
阿披耶特(Abhijeet)2012年

Thanx Abhijeet。我是印度人,但住在卡塔尔。我将服务器更改为沙特阿拉伯,但结果相同。
beeju 2012年

Answers:


90

尝试这个:

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

4
无需创建partial子目录。sudo apt-get update会自己做。
字节指挥官

9
完成上述操作后,我仍然收到此错误:Reading package lists... Done W: GPG error: http://developer.download.nvidia.com Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F60F4B3D7FA2AF80
Mona Jalal

可能值得回答所问的问题(并获得更多的赞誉;-))。
Witold Kaczurba '18年

第二步遇到错误:mv: cannot move '/var/lib/apt/lists' to '/tmp/lists': Directory not empty
Internet用户

您能详细说明一下这是什么吗?谢谢,
亨德里克

64

显示此消息是因为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,此后您将没有此类消息。


1
嗨@anwar,我在哪里/如何获得我信任的钥匙?
Minnie Shi

1
@MinnieShi该密钥存在于错误消息本身中The following signatures were invalid: BADSIG 16126D3A3E5C1192
Kalyan Raghu

1
请注意,该apt-key add命令应返回“ OK”。
线圈

太好了,应该是公认的答案!谢谢。
雅各布

13

我发现只是在做

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

为我工作。


使用sudo rm -rf / var / lib / apt / lists / * && sudo mkdir -p / var / lib / apt / lists保留可能具有的/ var / lib / apt / lists权限
131

1
无需创建partial子目录。sudo apt-get update会自己做。
字节指挥官

9

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

它将启动apt-get update,然后查找所有GPG错误并接收找到的GPG签名的密钥。就您而言,它只会启动

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

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


6

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

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

1
无需创建partial子目录。sudo apt-get update会自己做。
字节指挥官

4

我也遇到类似的错误。但是,而不是BADSIG我得到KEYEXPIRED了PostgreSQL仓库:

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可以正常使用!


1

这个提示(来自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


1

这可能是由于HTTP代理的缓存问题。如果您在像我这样的路线上某个地方有这样的人之一,可以要求Apt要求它暂时避开缓存:

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

-2

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

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

然后

sudo apt-get update
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.