为什么每次都无法更新Yarn密钥?GPG错误:https://dl.yarnpkg.com/debian stable InRelease:无法验证以下签名。

每次运行apt update都会显示错误。
W: GPG error: https://dl.yarnpkg.com/debian stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 23E7166788B63E1E
E: The repository 'https://dl.yarnpkg.com/debian stable InRelease' is not signed.

我试过了
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -

gpg: invalid key resource URL '/etc/apt/trusted.gpg.d/home:stevenpusser.gpg'
gpg: keyblock resource '(null)': General error
gpg: key 7721F63BD38B4796: 2 signatures not checked due to missing keys

使用y-ppa-manager,我得到了相同的结果。
gpg: invalid key resource URL '/etc/apt/trusted.gpg.d/home:stevenpusser.gpg'
gpg: keyblock resource '(null)': General error
gpg: key 7721F63BD38B4796: 2 signatures not checked due to missing keys
gpg: key 0FAD31CA8719FCE4: 1 signature not checked due to a missing key
gpg: key 3B4FE6ACC0B21F32: 3 signatures not checked due to missing keys
gpg: key D94AA3F0EFE21092: 3 signatures not checked due to missing keys
gpg: key 871920D1991BC93C: 1 signature not checked due to a missing key

我为了我的Github身份验证添加了这个密钥,所以我害怕从列表中删除它。我找不到它。
apt-key list

/etc/apt/trusted.gpg
--------------------
pub   rsa4096 2016-04-12 [SC]
      EB4C 1BFD 4F04 2F6D DDCC  EC91 7721 F63B D38B 4796
uid           [ unknown] Google Inc. (Linux Packages Signing Authority) <linux-packages-keymaster@google.com>
sub   rsa4096 2019-07-22 [S] [expires: 2022-07-21]

pub   rsa4096 2014-09-08 [SC]
      67CE 018F D19E 3CD4 8189  BC69 2180 17D1 CC5F DB34
uid           [ unknown] Yandex Browser Repository Key <browser@support.yandex.ru>
sub   rsa4096 2014-09-08 [E]

pub   rsa4096 2018-12-04 [SC] [expires: 2021-01-22]
      B44B 85E3 E1A6 386B FC79  D411 9658 E804 4A3A A3D6
uid           [ unknown] Vivaldi Package Composer KEY05 <packager@vivaldi.com>
sub   rsa4096 2018-12-04 [E] [expires: 2021-01-22]

提到的文件看起来像是编译后的二进制文件(我猜的)。
�\           #>p�����N��M�����k��2C�2�����5�Z~W?4����dm��}q�Q���ޠE�m�
  !��� 8�GFd]���ǚD�7��X�5�D�LG�E��S��O`{
                                        ��n-��1�<�+�*�լ�ak�,���Na����
D�i�5�NÁ��6��C��f�A�z?NTX��`*��`�c��(����\�]8���a��Sw��Dhome:stevenpusser OBS Project <home:stevenpusser@build.opensuse.org>�>([���    �
                                                                                                                                            

�
    �1ʇ����P�:31'���"�Ȭ��|�����������oH��e�М��\*2�m���YF�;z#a2K�g�*��yA�yQ0T@�{"�'��
}dH�[�y�1�X�_5Y��S�218a0��O��   ���j�4;�Àܶ��6ja�J=��}0�f
�\G{E>{U�u��3ުmEÜ!�c9����F�����
������3��T2�%��1}��v�!u����`TcCh\������q�   ���Lu����0tc�s$�FW��v
    ;0�k�e#�K�s���,�%�O~ܺ<���06%�nP2��s�):

我应该删除它吗?
如何检查gpg资源并解决这个问题?

2这个回答解决了你的问题吗?【如何修复 GPG 错误 "NO_PUBKEY"?】(https://askubuntu.com/questions/13065/how-do-i-fix-the-gpg-error-no-pubkey) - karel
@karel 不,我遇到了同样的问题。 - Richard Rublev
@karel 添加了更多信息,请查看。 - Richard Rublev
你在用Debian吗? - MandiYang
/etc/apt/trusted.gpg.d/home:stevenpusser.gpg 这个文件存在吗?你能展示一下它的内容吗? - Jad
@jad 请看一下我的修改,请。 - Richard Rublev
@yangmandi Ubuntu 20.04。 - Richard Rublev
1我会删除那个文件,或者至少给它改个名字,把它移出那个文件夹。 - Jad
1因为https://dl.yarnpkg.com/debian仓库是为Debian系统设计的,所以不能保证它百分之百适用。 - MandiYang
5个回答

我遇到了同样的问题,我只是运行了这个命令:
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -

我从这里得到的:https://www.ubuntuupdates.org/ppa/yarn

1这似乎修复了错误W: 在签名验证过程中发生错误。存储库未更新,将使用先前的索引文件。GPG 错误:https://dl.yarnpkg.com/debian stable InRelease:以下签名无效:EXPKEYSIG 23E7166788B63E1E Yarn Packaging <yarn@dan.cx> W: 无法获取 https://dl.yarnpkg.com/debian/dists/stable/InRelease 以下签名无效:EXPKEYSIG 23E7166788B63E1E Yarn Packaging <yarn@dan.cx> - Rayner
1看起来用新的方法来做这个会稍微改变你的命令,变成:curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo tee /etc/apt/trusted.gpg.d/dl.yarnpkg.com.asc - Carl
我使用的是Ubuntu 20.04.6 LTS,这个答案确实解决了GPG错误:https://dl.yarnpkg.com/debian stable InRelease:。谢谢! - Pablo Adames

通常情况下,您可以使用以下命令一次性更新所有密钥:
sudo apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com
这对我起作用了。

警告:apt-key已被弃用。请改为在trusted.gpg.d中管理密钥环文件(参见apt-key(8))。 - Robycool
这个修复了一切。我想知道为什么操作系统不自动做这个呢? - Andrew Koster
@AndrewKoster 是的,如果它能自动完成就好了。你可以设置一个定时任务来定期运行这个工作。 - CodeConnoisseur

对于Ubuntu 20.04,上述命令无效,需要使用下面的命令来解决这个错误:
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null

1谢谢,也适用于Ubuntu 22.04(Jammy)。 - bcag2

在@PA-GW的回答基础上,我创建了一个每天刷新密钥的Cronjob。希望这对于频繁更换密钥(如NodeJS)有所帮助。
17 2 * * * /usr/bin/apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com > /dev/null

我遇到了相同的错误,并通过以下方法进行了修复:
sudo apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com

最好能简要解释一下你所展示的命令是做什么用的:https://manpages.debian.org/stretch/apt/apt-key.8.en.html - Natan
你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人能够确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community