yum install报错 cyrus-sasl-devel-2.1.26-23.el7.x86 64 was supposed to be installed but is not!

在安装CDH客户端时,执行yuminstall命令遇到错误,因为yum源中缺少cyrus-sasl的相关包。解决方案是先在正常服务器下载rpm包,然后通过scp传输到问题服务器上,使用rpm命令强制安装。如果报GPGkey的警告,导入RPM的GPG密钥即可解决。

问题:
  自制的yum源,在一台服务器上安装cdh客户端时,执行 yum install cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi报错,yum list installed | grep cyrus-sasl-devel检查发现没有安装

在这里插入图片描述

原因:
  在其他节点上安装正常,

解决:

  在正常的服务器上把rpm包下载到本地目录(注意:只有在当前服务器未安装时有效,已经安装可yum remove后重新安装)

yum -y install --downloadonly --downloaddir=./  cyrus-sasl-devel.x86_64

  scp命令分发到对应服务器上
  在出现异常的服务器上执行:

rpm -ivh cyrus-sasl-devel-2.1.26-24.el7_9.x86_64.rpm  --nodeps --force

在这里插入图片描述
执行报错:warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID *
实际原因是yum安装了旧版本的GPG keys

解决办法:

rpm --import /etc/pki/rpm-gpg/RPM* 
<think> 我们面对两个问题: 1. 解决yum安装时出现的网络解析和仓库基础URL错误 2. 解决两台主机上cyrus-sasl相关包版本不一致的问题 首先,针对yum安装问题,根据引用[1][2][3][4]和之前的分析,主要原因是CentOS 7停止维护导致官方源不可用,以及可能的DNS问题。我们将采用以下步骤: ### 步骤一:修复DNS解析(确保能访问镜像站点) ```bash # 临时设置DNS(重启后失效) sudo echo "nameserver 8.8.8.8" >> /etc/resolv.conf sudo echo "nameserver 1.1.1.1" >> /etc/resolv.conf # 永久设置DNS(修改网卡配置文件,以eth0为例,根据实际情况替换) sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0 # 添加或修改以下两行 DNS1=8.8.8.8 DNS2=1.1.1.1 # 保存退出后重启网络 sudo systemctl restart network ``` ### 步骤二:切换到可用的yum源(如阿里云) 根据引用[1]和[2]提供的方法: ```bash # 备份原有仓库文件 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # 下载阿里云CentOS 7仓库文件 sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 如果没有curl,使用wget(如果两者都没有,先安装其中一个,或者手动下载) # sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 清理并重建缓存 sudo yum clean all sudo yum makecache ``` ### 步骤三:安装rpmrebuild ```bash sudo yum install -y rpmrebuild ``` 现在,解决第二个问题:两台主机上cyrus-sasl相关包版本不一致。 版本不一致原因: - 主机A:cyrus-sasl-lib-2.1.26-23.el7.x86_64 - 主机B:cyrus-sasl-lib-2.1.26-24.el7_9.x86_64 解决方法:统一版本。通常建议升级到较新的版本(24.el7_9),因为它是CentOS 7的更新版本。 ### 步骤一:查看可用的cyrus-sasl版本 在较低版本的主机(主机A)上执行: ```bash yum list available cyrus-sasl* ``` ### 步骤二:升级到指定版本 如果仓库中有24.el7_9版本,则执行: ```bash sudo yum update cyrus-sasl-lib cyrus-sasl-gssapi cyrus-sasl-plain ``` 如果仓库中没有,可以尝试从其他源获取,或者手动下载RPM包安装。 ### 手动安装方法(如果yum仓库没有): 1. 从较高版本的主机(主机B)上导出RPM包(如果主机B有): ```bash # 在主机B上 rpm -qa | grep cyrus-sasl # 确认具体包名 sudo yumdownloader cyrus-sasl-lib-2.1.26-24.el7_9.x86_64 cyrus-sasl-gssapi-2.1.26-24.el7_9.x86_64 cyrus-sasl-plain-2.1.26-24.el7_9.x86_64 ``` 将下载的RPM包复制到主机A,然后安装: ```bash sudo rpm -Uvh cyrus-sasl-*.rpm ``` 2. 或者从镜像站点下载(以阿里云为例): - 访问:https://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/ - 搜索对应的包,下载后安装。 ### 注意事项: - 升级cyrus-sasl包可能会影响依赖于它的服务(如Postfix, Dovecot等),请在维护窗口操作。 - 升级后重启相关服务或重启系统。 ### 验证: 在两台主机上执行: ```bash rpm -qa | grep cyrus-sasl ``` 查看版本是否一致。 --- §§相关问题§§ 1. 如何检查CentOS 7系统上已安装的软件包版本?[^1] 2. 使用yumdownloader下载RPM包时遇到依赖问题怎么办?[^2] 3. 升级系统库后如何确保服务兼容性?[^3] </think> ### 解决 `sudo yum install -y rpmrebuild` 报错的完整方案 #### 问题1:镜像解析失败和仓库URL错误 根本原因:CentOS 7 已停止维护(EOL),官方镜像源失效,同时存在DNS解析问题。 ##### 解决方案: 1. **修复DNS解析** ```bash # 临时修复DNS echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf >/dev/null echo "nameserver 1.1.1.1" | sudo tee -a /etc/resolv.conf >/dev/null # 永久生效(修改网卡配置) sudo vi /etc/sysconfig/network-scripts/ifcfg-ens* ``` 添加配置: ```ini DNS1=8.8.8.8 DNS2=1.1.1.1 PEERDNS=no # 防止配置被覆盖 ``` 重启网络:`sudo systemctl restart network` 2. **切换到阿里云镜像源** ```bash # 备份原配置 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak # 下载阿里云源配置 [^1][^2] sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 重建缓存 sudo yum clean all sudo yum makecache ``` 3. **安装 rpmrebuild** ```bash sudo yum install -y rpmrebuild # 此时应成功安装 ``` #### 问题2cyrus-sasl 包版本不一致 两台主机版本差异: - 主机A:`cyrus-sasl-lib-2.1.26-23.el7.x86_64` - 主机B:`cyrus-sasl-lib-2.1.26-24.el7_9.x86_64` ##### 解决方案: 1. **在低版本主机升级包** ```bash # 查询可用版本 yum list available cyrus-sasl* # 升级到统一版本 sudo yum update cyrus-sasl-lib-2.1.26-24.el7_9 ``` 2. **手动同步版本(若无网络)** ```bash # 从高版本主机导出RPM包 rpm -qa | grep cyrus-sasl # 确认包名 yumdownloader cyrus-sasl-lib-2.1.26-24.el7_9.x86_64 # 复制到低版本主机安装 scp *.rpm user@hostB:/tmp ssh user@hostB "sudo rpm -Uvh /tmp/*.rpm --nodeps" ``` 3. **验证版本一致性** ```bash # 在两台主机执行 rpm -qa | grep cyrus-sasl ``` --- ### 关键原理说明 1. **镜像源失效** CentOS 7 官方源已停用(错误:`Cannot find valid baseurl`),需切到阿里云等归档镜像 [^1][^2]。 2. **包版本同步** 使用 `yum update` 或 `rpm -Uvh` 强制统一版本,避免因依赖差异导致服务异常。公式表达版本约束: $$ v_{\text{target}} \geq \max(v_{\text{hostA}}, v_{\text{hostB}}) $$ ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

但行益事莫问前程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值