OpenSUSE密钥过期修复
方法一:使用 zypper 自动导入(推荐)
openSUSE 官方推荐的更简单方法是使用 zypper 命令,让它自动处理密钥刷新和导入。
sudo zypper ref -f
执行过程中,如果系统询问是否信任新密钥,请选择 a(始终信任)。
方法二:手动下载正确的密钥文件并导入
如果方法一无效,可以手动下载 ASCII 装甲格式的密钥文件:
1. 从官方镜像下载密钥文件
wget -O /tmp/RPM-GPG-KEY-openSUSE.asc https://download.opensuse.org/distribution/leap/16.0/repo/oss/gpg-pubkey-f6ab3975-62e9e6fb.asc #这里应该是你的版本路径
注意:文件扩展名应为 .asc,这是 ASCII 装甲格式的标识。
2. 验证文件格式
下载完成后,检查文件开头是否正确:
head -1 /tmp/RPM-GPG-KEY-openSUSE.asc
应该输出 -----BEGIN PGP PUBLIC KEY BLOCK-----。如果没有,说明下载的文件格式不正确。
3. 导入密钥
sudo rpm --import /tmp/RPM-GPG-KEY-openSUSE.asc
方法三:安装 openSUSE-build-key 包
openSUSE-build-key 包包含了用于验证官方软件包签名的所有公钥。可以尝试:
sudo zypper install openSUSE-build-key
如果 zypper 因密钥问题无法安装,可以直接下载 RPM 包手动安装:
wget https://download.opensuse.org/update/tumbleweed/x86_64/openSUSE-build-key-1.0-69.1.x86_64.rpm
sudo rpm -ivh openSUSE-build-key-1.0-69.1.x86_64.rpm
注意:需要根据你的系统架构选择对应的包。
验证密钥更新
导入完成后,验证新密钥是否已成功安装:
rpm -qa gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n' | grep -i opensuse
输出将类似于
gpg-pubkey-287a0027-682477e3 openSUSE Backports for SUSE Linux 16 <sle-backports-202500514@opensuse.org> public key
gpg-pubkey-29b700a4-62b07e22 openSUSE Project Signing Key <opensuse@opensuse.org> public key
查看输出中是否包含新的密钥 ID,并且旧的过期密钥是否已被替换。
备选方案:清理旧密钥
如果上述方法无效,可以手动删除旧的过期密钥后再重新导入:
首先查看当前密钥ID:
rpm -qa gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n' | grep -i opensuse
删除删除并且更新
sudo rpm -e gpg-pubkey-29b700a4-62b07e22 # 换成你的密钥ID
sudo zypper ref -f
注意:删除密钥后,zypper ref -f 会自动尝试获取并导入新密钥。
预防措施
完成密钥更新后,建议执行一次完整的系统更新以确保所有依赖关系正确:
sudo zypper dup
这将确保系统使用新的签名密钥验证所有已安装的软件包。

浙公网安备 33010602011771号