麒麟系统gpg密钥错误是因添加第三方源后缺少对应公钥导致校验失败;需用sudo apt update提取no_pubkey后的16位id,再通过apt-key adv导入,并验证生效。

麒麟系统安装软件时提示GPG密钥错误,说明APT在验证软件源签名时无法找到对应公钥,导致包校验失败、更新中断或安装被拒——这通常发生在添加第三方源(如Docker、阿里云、Ubuntu镜像)后,系统缺少其签名所需的GPG密钥。
确认缺失的密钥ID
打开终端,执行:
sudo apt update 2>&1 | grep NO_PUBKEY
从输出中精准提取16位密钥ID(例如 【FEEA9169307EA071】)。不能靠截图拼凑或手动输入,输错一位就会导入失败。如果出现多行NO_PUBKEY,把所有ID都记下来,后续需全部处理。
导入GPG公钥
方法一:使用标准密钥服务器
执行命令:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FEEA9169307EA071
方法二:国内网络不稳定时换用备用地址
执行命令:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys FEEA9169307EA071
【注意】apt-key已被Debian官方废弃,但麒麟V10 SP1及更早版本必须使用它——改用gpg命令会因路径、权限或密钥环位置不匹配导致密钥不生效。
验证并启用密钥
第一步:检查密钥是否已写入本地钥匙环
运行:
apt-key list | grep -A1 "FEEA9169307EA071"
若返回类似 pub rsa4096 2020-01-01 [SC] [expires: 2025-01-01] 的行,说明导入成功。
第二步:强制刷新软件包索引
执行:
sudo apt update
此时若不再出现对应NO_PUBKEY报错,且末尾显示 获取:1 http://xxx InRelease [xxx kB],即表示该源已通过签名验证。
第三步:测试安装(可选但推荐)
挑一个该源提供的小工具包,例如:
sudo apt install -y curl
能正常下载并校验安装,说明密钥不仅存在,还被正确关联到了对应源。
批量处理多个缺失密钥
① 将所有密钥ID整理成一行,用空格分隔:
FEEA9169307EA071 8B57C5C2836F4BEB BA6932366A755776
② 执行单行导入命令:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FEEA9169307EA071 8B57C5C2836F4BEB BA6932366A755776
③ 立即运行 sudo apt update 验证——不要跳过这步,因为部分密钥可能因服务器临时不可达而只导入了其中几个。











