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

i9p*_*pp0 8 updates apt ppa repository gnupg

在我最近的一次更新之后,我注意到我的第 3 方存储库由于 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.
Run Code Online (Sandbox Code Playgroud)

mur*_*uru 10

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

或者代替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 -
Run Code Online (Sandbox Code Playgroud)

笔记:

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

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