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

bee*_*eju 125 apt

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

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

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

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  
Run Code Online (Sandbox Code Playgroud)

这是什么意思,为什么会这样?

Sir*_*rlo 122

尝试这个:

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
Run Code Online (Sandbox Code Playgroud)

  • 执行上述操作后,我仍然收到此错误:`正在读取软件包列表...完成 W:GPG 错误:http://developer.download.nvidia.com 发布:无法验证以下签名,因为公钥不是可用:NO_PUBKEY F60F4B3D7FA2AF80` (21认同)
  • 无需创建`partial` 子目录。`sudo apt-get update` 会自己完成。 (6认同)
  • 你能详细说明这到底是做什么的吗?谢谢, (5认同)
  • -1 因为这里的 `mv` 和 `mkdir` 产生了一个新问题:`lists` 不再归 `_apt` 所有。这意味着您现在将收到这个新的 apt 警告:`W:下载是在未经沙箱的情况下执行的...`。 (2认同)

Anw*_*war 90

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

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

gpg --keyserver keyserver.ubuntu.com --recv-keys 16126D3A3E5C1192 
Run Code Online (Sandbox Code Playgroud)

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

gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16126D3A3E5C1192
Run Code Online (Sandbox Code Playgroud)

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

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

gpg: Total number processed: 1
gpg:               imported: 1
Run Code Online (Sandbox Code Playgroud)

然后运行这个命令:

gpg --export --armor 16126D3A3E5C1192 | sudo apt-key add - 
Run Code Online (Sandbox Code Playgroud)

注意-后面的符号add

然后sudo apt-get update,在此之后您将不会收到此类消息。

  • 你好@anwar,我在哪里/如何获得我信任的密钥? (3认同)
  • @MinnieShi 密钥存在于错误消息本身中“以下签名无效:BADSIG 16126D3A3E5C1192” (3认同)
  • 请注意,“apt-key add”命令应返回“OK”。 (3认同)

int*_*ted 17

我发现只是在做

sudo rm -rf /var/lib/apt/lists
sudo mkdir /var/lib/apt/lists
Run Code Online (Sandbox Code Playgroud)

为我工作。


Max*_*aev 12

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

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

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4C1CBC1B69B0E2F4
Run Code Online (Sandbox Code Playgroud)

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


G_S*_*yle 9

我在较旧的 Ubuntu 16.04 机器上遇到了这个问题。我的密钥没有过期,所以我不确定为什么我会收到错误。我尝试了 SirCharlo 的方法,但仍然出现相同的错误。由于这个特殊错误来自“Ubuntu Extras Archive Automatic Signing Key”,我决定刷新我的密钥。这样做之后,一切正常。不确定它是否是两种方法的组合,但如果 SirCharlo 的方法不起作用,请运行以下命令:

apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com
Run Code Online (Sandbox Code Playgroud)

  • 这应该是选择的答案! (4认同)
  • 同意。这感觉执行起来好多了(并且有效),谢谢。 (2认同)

Ell*_*iew 7

正如131现已删除的答案的评论中建议的那样,这样做:

  1. 首先清理东西:

    sudo apt-get clean
    
    Run Code Online (Sandbox Code Playgroud)
  2. 保存备份并保留所有权的可选步骤lists

    sudo cp -a /var/lib/apt/lists /tmp
    sudo rm -r /var/lib/apt/lists/*
    
    Run Code Online (Sandbox Code Playgroud)
  3. 然后重建包列表:

    sudo apt update
    
    Run Code Online (Sandbox Code Playgroud)

笔记

在一个高度赞扬的答案中提出了以下建议,现已删除

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
Run Code Online (Sandbox Code Playgroud)

这不是一个好建议,因为 和mvmkdir这里产生了一个新问题:lists不再属于_apt。这意味着您现在将收到此新apt警告:

W: Download is performed unsandboxed...
Run Code Online (Sandbox Code Playgroud)

您需要保留该lists文件夹的现有所有权和权限。


Chi*_*rag 5

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

sudo -i
apt-get clean
cd /var/lib/apt
mv lists lists.old
mkdir -p lists/partial
apt-get clean
apt-get update
Run Code Online (Sandbox Code Playgroud)

  • -1 销毁的`lists` 所有权。“部分”也是如此。 (2认同)

Ulf*_*lfR 5

我遇到了类似的错误。但是BADSIG我没有得到KEYEXPIREDPostgreSQL 存储库:

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
Run Code Online (Sandbox Code Playgroud)

解决方案在这里得到了完美的描述但这就是我为解决它所做的:

$ 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 -
Run Code Online (Sandbox Code Playgroud)

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