如何解决yum/rpm中qpid-proton-c的依赖问题?
qpid-proton-c软件包依赖问题解析与解决方法
首先咱们先把你遇到的CLI输出贴出来,方便对照解读:
正在解析依赖关系 --> 运行事务检查 ---> 将更新软件包 python36-qpid-proton.x86_64 0:0.34.0-1.el7 ---> 将更新为软件包 python36-qpid-proton.x86_64 0:0.37.0-1.el7 ---> 将更新软件包 qpid-proton-c.x86_64 0:0.34.0-1.el7 --> 处理依赖关系:软件包 python2-qpid-proton-0.34.0-1.el7.x86_64 需要 qpid-proton-c(x86-64) = 0.34.0-1.el7 ---> 将更新为软件包 qpid-proton-c.x86_64 0:0.37.0-1.el7 --> 依赖关系解析完成 错误:软件包:python2-qpid-proton-0.34.0-1.el7.x86_64 (@epel-Production) 需要:qpid-proton-c(x86-64) = 0.34.0-1.el7 即将移除:qpid-proton-c-0.34.0-1.el7.x86_64 (@epel-Production) qpid-proton-c(x86-64) = 0.34.0-1.el7 更新为:qpid-proton-c-0.37.0-1.el7.x86_64 (epel-Production) qpid-proton-c(x86-64) = 0.37.0-1.el7 可用版本:qpid-proton-c-0.14.0-2.el7.x86_64 (extras-Production) qpid-proton-c(x86-64) = 0.14.0-2.el7 您可以尝试使用 --skip-broken 参数绕过此问题 您可以尝试执行命令:rpm -Va --nofiles --nodigest
错误信息解读
- 核心冲突点:你要更新
qpid-proton-c到0.37.0版本,但当前系统里装的python2-qpid-proton-0.34.0有严格版本依赖——它必须搭配qpid-proton-c=0.34.0才能运行,版本号差一点都不行。 - 细节拆解:
- 包管理器本来计划把
python36-qpid-proton和qpid-proton-c都更到0.37.0版本; - 但它检测到
python2-qpid-proton还停留在0.34.0,这个旧版本死死绑定了旧的qpid-proton-c; - 如果强行更新
qpid-proton-c到0.37.0,旧的0.34.0版本会被删掉,python2-qpid-proton就失去了必要依赖,所以包管理器直接报错终止了更新。
- 包管理器本来计划把
可行的解决方法
方法1:同步更新所有qpid-proton相关包(优先推荐)
如果EPEL仓库里已经有了和qpid-proton-c-0.37.0匹配的python2-qpid-proton-0.37.0版本,直接让包管理器把所有相关包一起更新,就能自动解决依赖匹配问题:
yum update *qpid-proton*
或者更精准地指定包:
yum update python2-qpid-proton qpid-proton-c python36-qpid-proton
方法2:移除不再使用的python2-qpid-proton包
如果你现在已经不用Python2版本的qpid-proton了(毕竟Python2早就停止维护了),可以直接删掉这个包,然后再更新剩下的:
# 先移除python2-qpid-proton yum remove python2-qpid-proton # 再执行更新 yum update qpid-proton-c python36-qpid-proton
注意:执行移除前,最好先确认下有没有其他服务或软件依赖这个包,比如用yum deplist python2-qpid-proton查看依赖关系,避免误删影响业务。
方法3:临时绕过冲突(仅紧急场景用)
如果只是想先完成其他更新,暂时不管这个冲突,可以用提示里的--skip-broken参数:
yum update --skip-broken
但这只是权宜之计,并没有真正解决依赖问题,后续操作可能还会碰到同样的报错,不建议长期这么用。
方法4:检查并修复RPM数据库(辅助排查)
提示里的rpm -Va --nofiles --nodigest命令是用来检查系统中已安装RPM包的完整性,修复可能的数据库损坏问题。如果是因为数据库异常导致依赖识别错误,执行这个命令可能会有帮助:
rpm -Va --nofiles --nodigest
执行完后再尝试更新操作。
内容的提问来源于stack exchange,提问作者Mister Lamp
相关产品推荐
相关产品推荐

