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

这将确保系统使用新的签名密钥验证所有已安装的软件包。

posted @ 2026-09-27 18:05  秦晓  阅读(7)  评论(0)    收藏  举报