由于 apt-key 已弃用,我该如何添加 repo gpg 密钥?

由于 apt-key 已弃用,我该如何添加 repo gpg 密钥?

在最近的一次更新之后,我注意到我的第三方存储库由于 apt 错误而无法更新NO_PUBKEY。我花了几个小时寻找修复方法,但所有修复方法都建议使用 apt-key。但是,由于已被弃用,该方法不再有效。因此,我手动将一个存储库的密钥从 复制/usr/share/keyrings/etc/apt/trusted.gpg.d作为测试,这似乎有效。现在该应用程序一切正常。

我的问题是:是否有新功能可以从密钥服务器下载密钥来代替该apt-key功能?大多数网站尚未意识到这一变化,并apt-key为他们的存储库密钥提供命令,而现在只会返回错误。如何更新我当前的第三方存储库密钥,因为只有他们有问题?我应该cp像上面提到的那样手动输入密钥吗,还是有更有效的解决方案?

编辑:我使用的是 20.10。Apt-key 适用于 20.04,但此后不再适用。

$ sudo apt update
Err:9 http://repo.vivaldi.com/stable/deb stable Release.gpg
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 9658E8044A3AA3D6

W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://repo.vivaldi.com/stable/deb stable Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 9658E8044A3AA3D6
W: Failed to fetch http://repo.vivaldi.com/stable/deb/dists/stable/Release.gpg  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 9658E8044A3AA3D6
W: Some index files failed to download. They have been ignored, or old ones used instead.

答案1

apt-key从未自行下载密钥。apt-key adv将选项传递给gpg,并gpg进行实际下载(apt-key复杂的 shell 脚本它本身会创建要运行的临时脚本gpg)。您仍然可以使用gpg导入密钥,例如,而不是apt-key adv --recv-keys,您可以执行以下操作:

sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/foo.gpg --recv-keys 9658E8044A3AA3D6

或者代替wget ... | apt-key add -

wget -qO - https://example.com/somekey.gpg |
  sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/example.gpg --import -

笔记:

  1. GnuPG 将在 root 的主目录中创建信任存储。--homedir如果要避免这种情况,请与其他部分一起使用。
  2. GnuPG 默认以新的密钥箱格式创建密钥环,这些密钥环不适用于apt,但使用gnupg-ring:前缀会使它由于某种原因使用旧格式。

如果您的软件已经在中安装了密钥环/usr/share/keyrings,那么大概它们的sources.list条目应该有类似的内容[signed-by=/usr/share/keyrings/foo.gpg](参见Debian 维基)。

相关内容