修复丢失的 GPG 密钥 Apt 存储库错误 (NO_PUBKEY)

[ad_1]

在 Debian、Ubuntu 或 Linux Mint 上运行时,您可能会看到缺少公共 GPG 密钥错误(“NO_PUBKEY”) apt update / apt-get update. 当您添加存储库而忘记添加其公钥时,可能会发生这种情况,或者在尝试导入 GPG 密钥时可能出现临时密钥服务器错误。

当运行一个
apt update

/
apt-get update

,或者尝试使用一些 GUI 工具刷新软件源,apt 会抱怨无法下载所有存储库索引,显示如下错误:

W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://ppa.launchpad.net/linuxuprising/apps/ubuntu bionic InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY EA8CACC073C3DB2A

W: Failed to fetch https://ppa.launchpad.net/linuxuprising/apps/ubuntu/dists/bionic/InRelease  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY EA8CACC073C3DB2A

W: Some index files failed to download. They have been ignored, or old ones used instead.

这只是一个例子。 此错误不仅会出现在 Launchpad PPA 存储库中,还会出现在任何存储库中,例如 Google、Vivaldi 或 Node.js 等提供的存储库。

错误消息说存储库未更新,将使用以前的索引文件。 这意味着您不会收到来自该存储库的更新,因此您应该导入公共 GPG 密钥来解决此问题。

这是如何轻松修复 The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ... 错误。 它应该适用于 Debian、Ubuntu、Linux Mint、Pop!_OS、elementary OS 和任何其他基于 Debian 或 Ubuntu 的 Linux 发行版。

解决方案 1:针对单个存储库/密钥的快速 NO_PUBKEY 修复。

如果您只缺少一个公共 GPG 存储库密钥,您可以在您的 Ubuntu / Linux Mint / Pop!_OS / Debian 系统上运行此命令来修复它:

sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net:80 --recv-keys THE_MISSING_KEY_HERE

你必须更换
THE_MISSING_KEY_HERE

缺少 GPG 密钥。 密钥显示在 apt update / apt-get 更新日志中,在 NO_PUBKEY 之后。 例如,在我上面发布的错误消息中,此命令中必须使用的缺少的 GPG 密钥是
EA8CACC073C3DB2A

.

另请参阅:如何修复“无法获得锁定 /var/lib/dpkg/lock – 打开(11 资源暂时不可用)”错误

解决方案 2:批量导入所有丢失的 GPG 密钥。

当您缺少多个公开的 OpenPGP 密钥时,您可以使用这种单行方式一次性导入所有密钥:

sudo apt update 2>&1 1>/dev/null | sed -ne 's/.*NO_PUBKEY //p' | while read key; do if ! [[ ${keys[*]} =~ "$key" ]]; then sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net:80 --recv-keys "$key"; keys+=("$key"); fi; done

无需更改命令的任何部分,只需按原样运行即可。 这也适用于修复单个丢失的 GPG 密钥,但有点多余。 尽管如此,它可以处理任意数量的缺失 GPG 密钥。

命令运行
sudo apt update

更新您的软件源并检测丢失的 GPG 密钥,并使用以下命令导入每个丢失的密钥
hkp://pool.sks-keyservers.net:80

作为它的服务器。 该服务器与许多其他服务器持续同步,因此它应该具有更新的密钥。 如果您愿意,您可以使用其他服务器。

该命令还使用一个数组来存储我们已经为其导入了密钥的缺失 GPG 密钥。 否则,密钥导入命令将为每个丢失的密钥运行两次。

您可能还感兴趣:如何使用 GUI 在 Linux 上制作 PGP 密钥(并发布)

[ad_2]

Related Posts