如何解决NO_PUBKEY 8C718D3B5072E1F5

如何解决NO_PUBKEY 8C718D3B5072E1F5

我现在遇到一个问题,当我在 debian 版本 9.13 上执行以下命令时: sudo apt-get update 我收到此错误:

Fetched 21.6 kB in 0s (34.9 kB/s)
Reading package lists... Done
W: GPG error: http://repo.mysql.com/apt/debian stretch InRelease: The following signatures 
couldn't be verified because the public key is not available: NO_PUBKEY 8C718D3B5072E1F5
W: The repository 'http://repo.mysql.com/apt/debian stretch InRelease' is not signed.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous 
to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.

好吧,这个密钥我删除了,因为它已经过期了。我从 mysql 下载了新密钥。这是我的 apt-key 列表:

apt-key 列表

apt-key 列表 2

但到目前为止,我无法运行更新命令,并且每次仍然会出现此错误。请注意,我做了所有可能的尝试,但都失败了。有谁可以帮助我解决这个问题,特别是因为它是特定于网络托管服务器的?

答案1

复制这个 gpg 钥匙进入mysql_pubkey.asc文件然后运行:

gpg --import mysql_pubkey.asc
gpg --fingerprint 5072E1F5

请参阅 MySQL 文档:2.1.4.2 使用 GnuPG 检查签名

答案2

apt-key已弃用。通常apt-get会警告您仍然有一个密钥存储在/etc/apt/trusted.gpg.您的屏幕截图显示 MySQL 密钥是唯一存储在那里的。我在输出中没有看到警告apt-get,但我会尝试遵循联机帮助页的弃用部分中的建议apt-key

除了在维护者脚本中使用 apt-key del 之外,不推荐使用 apt-key。本节介绍如何替换现有的 apt-key 使用。如果您现有的 apt-key add 用法如下所示:
wget -qO-https://myrepo.example/myrepo.asc| sudo apt-key add -
然后您可以直接将其替换为(尽管请注意下面的建议):
wget -qO-https://myrepo.example/myrepo.asc| sudo tee /etc/apt/trusted.gpg.d/myrepo.asc
确保使用 ASCII 装甲密钥的“asc”扩展名和二进制 OpenPGP 格式的“gpg”扩展名(也称为“GPG 密钥公共环”) )。二进制 OpenPGP 格式适用于所有 apt 版本,而 ASCII 装甲格式适用于 apt 版本 >= 1.4。
推荐:您可以通过使用sources.list中的Signed-By选项并指向密钥的文件名,将它们放置在文件系统上的任何位置,而不是将密钥放入/etc/apt/trusted.gpg.d目录中。详细信息请参见sources.list(5)。从 APT 2.4 开始,/etc/apt/keyrings 被提供作为不由软件包管理的密钥的推荐位置。当使用 deb822 样式的 resources.list 且 apt 版本 >= 2.4 时,还可以使用 Signed-By 选项将完整的 ASCII 装甲密钥环直接包含在 resources.list 中,而无需附加文件。

相关内容