no_pubkey或invalidsig错误需导入对应gpg公钥至/usr/share/keyrings/并显式声明signed-by路径:提取keyid,下载.asc或.gpg密钥,用gpg --dearmor或cp存入标准路径,编辑源文件添加signed-by参数,最后sudo apt clean && sudo apt update强制刷新。

统信UOS系统执行sudo apt update时提示NO_PUBKEY或INVALIDSIG,说明私有软件仓库的GPG签名无法被验证,必须将对应公钥导入密钥环并正确关联到源配置中,否则包管理器会直接拒绝加载该仓库元数据。
确认缺失公钥ID并下载公钥文件
执行sudo apt update,从错误输出中提取缺失的公钥ID(如NO_PUBKEY ABCD1234567890EF);若私有仓库提供的是ASCII格式公钥文件(.asc),直接wget或scp获取;若只提供二进制.gpg文件,需确保其为标准OpenPGP密钥块,不是证书或签名文件。
这一步不能跳过——用错格式的密钥文件会导致后续所有导入操作静默失败,且无明确报错提示。
将公钥安装到/usr/share/keyrings/目录
统信UOS v20+已弃用全局trusted.gpg,必须把公钥存入/usr/share/keyrings/并显式引用路径,否则apt不会加载。
方法一:直接安装二进制.gpg文件
执行sudo cp your-keyring.gpg /usr/share/keyrings/your-repo-archive-keyring.gpg。
方法二:从.asc文件生成标准密钥环
运行gpg --dearmor -o /usr/share/keyrings/your-repo-archive-keyring.gpg your-keyring.asc。
【文件名必须以.gpg结尾,且路径中不能含空格或中文】
在源配置中显式声明signed-by路径
编辑对应的源文件,例如sudo nano /etc/apt/sources.list.d/private-repo.list。
将原有deb行:
deb https://repo.internal.company/ stable main
改为:
deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/your-repo-archive-keyring.gpg] https://repo.internal.company/ stable main
注意:若私有仓库仅支持单架构,请删掉不匹配的arch参数,否则apt update会跳过该源;若不确定架构,先保留amd64,arm64,后续根据实际机器输出调整。
清空缓存并强制更新认证态
第一步:清除APT本地缓存与状态文件
执行sudo apt clean && sudo rm -rf /var/lib/apt/lists/*。
第二步:重新拉取并校验仓库元数据
运行sudo apt update。
成功时输出中应出现Get:1 https://repo.internal.company stable InRelease [数字KB],且无NO_PUBKEY或BADSIG字样。若仍有报错,检查signed-by路径是否拼写错误、文件权限是否为644、以及公钥是否真能验证该仓库Release文件。











