关于The GPG keys listed for the "***" repository are already installed but they are not corret

本文解释了在使用自建的repo源码库时遇到的GPG密钥问题,并提供了如何验证软件包真实性的方法。

这个问题是在自己制作的repo源码库的时候出现的,从字面上理解,是“为“***”源码仓库出示的GPG密钥已经安装,但不正确”。

首先,GPG密钥存在的目的是处于安全和规范考虑,RedHat在发布软件包的时候会根据软件包生成对应密钥,当用户安装软件包的时候会根据密钥校验软件包。

若是用yum安装,当/etc/yum.conf文件有如下配置项目时。

gpgcheck=1
yum安装的时候就会校验软件包是否是官方发布的。当然可以给yum添加--nogpgcheck来强制安装。

sudo yum install *** --nogpgcheck
这个问题往往源于用户仓库中的rpm包有时候是用户自己制作的,或者从第三方获取,这个时候问题就会出现。为了避免这个问题,在将源码包加入到仓库中的时候可以提前检验一下源码包的官方性,命令如下:

rpm -K *.rpm 
如输出如下:

***.rpm: rsa sha1 (md5) pgp md5 OK
则说明软件包为官方发布,可以放心使用。

### 问题分析 在 CentOS 系统中,使用 `yum` 安装软件包时,如果出现类似 **"The GPG keys listed for the 'CentOS-7 SCLo RH' repository are already installed but they are not correct for this package"** 的错误信息,通常意味着以下情况之一: 1. **GPG 密钥版本不匹配**:系统中安装的 GPG 密钥与仓库配置中指定的密钥不一致。 2. **仓库配置错误**:`/etc/yum.repos.d/` 中的 `.repo` 文件可能配置了错误的 GPG 密钥 URL。 3. **缓存残留**:`yum` 缓存中可能残留了旧的或不兼容的密钥信息。 ### 解决方案 #### 1. 清除已安装的 GPG 密钥并重新导入 可以尝试清除当前系统中已有的 CentOS 相关 GPG 密钥,然后重新导入官方提供的密钥文件: ```bash rpm -qa gpg-pubkey* --qf "%{NAME}-%{VERSION}-%{RELEASE}\t%{PACKAGER}\n" | grep "CentOS" ``` 找到与 CentOS 相关的 GPG 密钥 ID 后,使用以下命令删除它们: ```bash rpm -e gpg-pubkey-<KEY_ID>-<RELEASE> ``` 接着,重新导入正确的 GPG 密钥: ```bash rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 ``` 如果该文件不存在,可以从官方镜像下载并导入: ```bash wget http://mirror.centos.org/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7 -O /tmp/RPM-GPG-KEY-CentOS-7 rpm --import /tmp/RPM-GPG-KEY-CentOS-7 ``` #### 2. 检查仓库配置文件中的 GPG 配置 编辑 `/etc/yum.repos.d/CentOS-SCLo-scl.repo` 或对应的仓库配置文件,确认 `gpgkey` 指向正确的 URL,例如: ```ini gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 ``` 确保该路径下的密钥文件存在且有效。如果使用的是第三方仓库,如 SCLo 或 Webtatic,也应确认其仓库配置中 `gpgkey` 指向正确的 URL 或本地路径[^2]。 #### 3. 清理 Yum 缓存并重新生成 执行以下命令清理 `yum` 缓存并重建元数据: ```bash yum clean all yum makecache ``` 这将清除旧的缓存数据并重新下载仓库元信息,有助于解决因缓存导致的 GPG 验证失败问题[^4]。 #### 4. 暂时禁用 GPG 检查(不推荐) 如果仅用于临时测试,可以在安装命令中禁用 GPG 检查: ```bash yum install <package-name> --nogpgcheck ``` 但该方法会跳过所有 GPG 验证,可能带来安全风险,因此不建议在生产环境中使用。 ### 示例:重新导入 CentOS 7 SCLo RH 仓库的 GPG 密钥 ```bash # 删除旧密钥 rpm -e $(rpm -qa "gpg-pubkey*" | grep -i centos) # 下载并导入新密钥 wget http://mirror.centos.org/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 # 清理缓存 yum clean all yum makecache # 安装软件包 yum install centos-release-scl ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值