我使用软件源程序添加了一些额外的存储库。但是当我重新加载软件包数据库时,出现了如下错误:
W:GPG 错误:http://ppa.launchpad.nettrusty InRelease:由于公钥不可用,无法验证以下签名:NO_PUBKEY 8BAF9A6F
根据 Ubuntu 官方文档,我知道我可以在终端中修复它apt-key
。但我更希望以图形方式进行修复。有没有不使用终端就可以做到这一点的方法?
答案1
此答案适用于 Ubuntu 20.04 及之前的版本。对于 Ubuntu 20.10 及更高版本,请参阅StackOverflow 上的这个答案。
简短版本如下:
sudo mkdir -m 0755 -p /etc/apt/keyrings/
wget -O- https://example.com/EXAMPLE.gpg |
gpg --dearmor |
sudo tee /etc/apt/keyrings/EXAMPLE.gpg > /dev/null
sudo chmod 644 /etc/apt/keyrings/EXAMPLE.gpg
echo "deb [signed-by=/etc/apt/keyrings/EXAMPLE.gpg] https://example.com/apt stable main" |
sudo tee /etc/apt/sources.list.d/EXAMPLE.list
sudo chmod 644 /etc/apt/sources.list.d/EXAMPLE.list
# Optional (you can find the email address / ID using 'apt-key list')
sudo apt-key del [email protected]
原始答案:
在终端中执行以下命令
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <PUBKEY>
<PUBKEY>
您丢失的存储库公钥在哪里,例如8BAF9A6F
。
然后更新
sudo apt-get update
替代方法:
sudo gpg --keyserver pgpkeys.mit.edu --recv-key <PUBKEY>
sudo gpg -a --export <PUBKEY> | sudo apt-key add -
sudo apt-get update
请注意,当您使用 导入密钥时,apt-key
您正在告诉系统您信任您导入的密钥,以便对系统将要使用的软件进行签名。除非您确定该密钥确实是软件包分发者的密钥,否则请不要这样做。
答案2
目前为止,处理此问题最简单的方法是使用 Y-PPA-Manager(现在将launchpad-getkeys
脚本与图形界面集成在一起)。
要安装它,首先添加该程序的 webupd8 存储库:
sudo add-apt-repository ppa:webupd8team/y-ppa-manager
更新您的软件列表并安装 Y-PPA-Manager:
sudo apt-get update sudo apt-get install y-ppa-manager
运行 y-ppa-manager(即输入
y-ppa-manager
然后按回车键)。当出现主 y-ppa-manager 窗口时,单击“高级”。
从高级任务列表中,选择“尝试导入所有缺失的 GPG 密钥”,然后单击“确定”。
大功告成!正如启动操作时出现的警告对话框所示,这可能需要相当长的时间(对我来说大约 2 分钟),具体取决于您有多少 PPA 以及您的连接速度。
答案3
答案4
注意:从最近的版本开始,将 PPA 密钥添加到密钥环不再被视为良好做法。不过,我会保留这个答案,但 apt-key 现已弃用,因此建议我们遵循不同的方法目前。
apt 只能处理 /etc/apt/trusted.gpg.d 中的 40 个密钥。41 个密钥会导致您收到 GPG 错误“未找到公钥”,即使您按照所有步骤添加丢失的密钥也是如此。
检查此文件中是否有您不再使用的 ppa 中未使用的密钥。如果所有密钥都在使用中,请考虑删除一些 ppa 以及 /etc/apt/trusted.gpg.d 中的相应密钥文件
此外,使用
sudo apt-key adv
被认为存在安全风险,不建议就像你一样 ”破坏整个安全概念,因为出于各种原因,这不是接收密钥的安全方式(例如:hkp 是纯文本协议,可以伪造短密钥甚至长密钥,...)“。http://ubuntuforums.org/showthread.php?t=2195579
我认为添加缺失键(例如 1ABC2D34EF56GH78)的正确方法是
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 1ABC2D34EF56GH78
gpg --export --armor 1ABC2D34EF56GH78 | sudo apt-key add -