linux软件包仓库gpg签名过期本质是公钥有效期失效,导致apt或pacman拒绝验证源;需据expkeysig(密钥过期)、no_pubkey(缺公钥)、badsig/nodata(旧体系弃用)等报错关键词分类处理,再执行对应密钥更新或替换操作。

Linux 软件包仓库签名证书过期,本质是 GPG 公钥有效期失效,导致 apt 或 pacman 拒绝验证软件源。这不是系统损坏,而是安全机制在起作用——它宁可中断更新,也不加载未经可信签名的包。
识别错误类型和对应密钥
先看报错关键词,再决定怎么处理:
-
EXPKEYSIG:明确提示密钥已过期,例如
EXPKEYSIG 3F01618A51312F3F,说明本地存的公钥有截止日期(如 2024-03-01),现已失效 - NO_PUBKEY:系统压根没这个公钥,常见于新增第三方源(如 Docker、GitLab)后未导入密钥
- BADSIG / NODATA:多见于老旧发行版(如 Kali 2019 前、Ubuntu 16.04),旧密钥体系已被弃用,需整体替换密钥环
执行 apt-key list(Debian/Ubuntu/Kali)或 pacman-key --list-keys(Arch)可查看所有密钥及其过期时间;重点关注带 expired: 标记的条目。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
Debian/Ubuntu/Kali 系统的标准修复流程
新旧系统处理方式不同,优先推荐现代方法(不依赖已弃用的 apt-key):
- 下载官方密钥文件并部署到信任目录:
wget -qO- https://archive.kali.org/archive-key.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/kali-archive-keyring.gpg
(Kali)或curl -fsSL https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/gitlab.gpg - 若使用旧版 Ubuntu(如 20.04),且上述方式报权限或路径错误,可临时用兼容命令:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ED444FF07D8D0BF6 - 更新后必须刷新缓存:
sudo apt clean && sudo apt update
Arch Linux 密钥环过期专用方案
Arch 不用单个密钥管理,靠 archlinux-keyring 包统一维护所有官方密钥:
- 强制刷新密钥环(即使系统无法正常升级):
sudo pacman-key --init && sudo pacman-key --populate archlinux - 若提示
marginal trust,说明已有密钥信任等级不足,需重置并同步:sudo pacman-key --refresh-keys && sudo pacman -Sy archlinux-keyring - 完成后务必执行:
sudo pacman -Syu(避免因密钥未生效导致后续升级失败)
镜像源与密钥同步的常见陷阱
用国内镜像(清华、中科大、阿里云)时,GPG 错误常不是密钥本身问题,而是镜像同步滞后:
- 确认你使用的镜像站是否已同步最新密钥——访问其官网或 GitHub 镜像页,查看
Release.gpg和InRelease文件修改时间 - 临时切回官方源验证问题根源:
编辑/etc/apt/sources.list,把https://mirrors.tuna.tsinghua.edu.cn/kali换成https://http.kali.org/kali,再运行sudo apt update - 修复密钥后再换回镜像源,不要颠倒顺序——否则新密钥可能被旧镜像覆盖










