在我最近的一次更新之后,我注意到我的第 3 方存储库由于NO_PUBKEY
apt 的错误而未能更新。我找了好几个小时才找到修复程序,但所有修复程序都建议使用 apt-key。但是,这不再有效,因为它已被弃用。/usr/share/keyrings
因此,我手动将一个 repo 的密钥从to复制/etc/apt/trusted.gpg.d
为测试,这似乎有效。现在一切都适用于该应用程序。
我的问题是:是否有从密钥服务器下载密钥的新功能而不是该apt-key
功能?大多数站点还没有意识到这一变化,并apt-key
为他们的 repo 密钥提供了命令,现在只是返回错误。以及如何更新我当前的第三方回购密钥,因为只有他们有问题?我应该像上面提到的那样手动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.
apt-key
从来没有自己下载过密钥。apt-key adv
将选项传递给gpg
,并gpg
进行实际下载(apt-key
这是一个复杂的 shell 脚本,它本身会创建临时脚本来运行gpg
)。您仍然可以使用gpg
导入密钥,例如,代替apt-key adv --recv-keys
,您可以执行以下操作:或代替
wget ... | apt-key add -
:笔记:
--homedir
如果您想避免这种情况,请与其他部分一起使用。apt
,但是gnupg-ring:
由于某种原因,使用前缀使其使用旧格式。如果您的软件已经在 中安装了密钥环
/usr/share/keyrings
,那么大概它们的sources.list
条目应该有类似的内容[signed-by=/usr/share/keyrings/foo.gpg]
(参见Debian Wiki)。