RHEL7中安装abc.x86_64 RPM包出现文件冲突错误的咨询
RHEL7下RPM包安装冲突问题解析
先把你碰到的错误输出贴出来,方便对照:
Fri Aug 30 05:36:55 UTC 2019--> Start Installing downloaded package... file /etc/rc.d from install of abc.x86_64 conflicts with file from package chkconfig-1.7.4-1.el7.x86_64 file /etc/rc.d/init.d from install of abc.x86_64 conflicts with file from package chkconfig-1.7.4-1.el7.x86_64 file /etc/rc.d from install of abc.x86_64 conflicts with file from package initscripts-9.49.47-1.el7.x86_64 file /etc/rc.d/init.d from install of abc.x86_64 conflicts with file from package initscripts-9.49.47-1.el7.x86_64 file /usr/lib/systemd/system from install of abc.x86_64 conflicts with file from package systemd-219-67.el7_7.1.x86_64 file /usr/lib/systemd from install of abc.x86_64 conflicts with file from package systemd-219-67.el7_7.1.x86_64
错误的实际含义
这个错误的核心是系统目录的归属冲突:
- 你要安装的
abc.x86_64包,在打包时犯了个低级错误——它把几个RHEL7自带的核心系统目录(/etc/rc.d、/etc/rc.d/init.d、/usr/lib/systemd、/usr/lib/systemd/system)标记为自己的“私有文件/目录”,打算在安装时声明这些目录的所有权。 - 但这些目录早就是系统基础包的“地盘”了:
chkconfig和initscripts负责维护/etc/rc.d相关的启动脚本目录,systemd则是/usr/lib/systemd系列目录的所有者,这些都是系统启动、服务管理的核心组件,绝对不能随意变更归属。
RPM包管理器的核心职责之一就是防止这种“抢地盘”的情况,所以它直接抛出冲突错误,阻止安装,避免破坏系统目录结构的完整性。
对你疑问的解答
- 不是
abcRPM不允许修改这些目录——恰恰相反,是它不该试图去“认领”整个目录。正常的服务类RPM包只会往这些目录里放置自己的专属文件(比如/etc/rc.d/init.d/abc启动脚本,或者/usr/lib/systemd/system/abc.service服务配置),而不会把整个系统目录划到自己名下。 chkconfig、initscripts、systemd根本不是什么“冲突包”——它们是RHEL7必须的系统基础包,冲突的锅完全在abc包的打包缺陷上。
简单的解决建议
- 如果这个
abc包是你自己打包的,赶紧去修改spec文件,把这些系统目录的%files声明删掉,只保留你自己的服务文件。 - 如果是第三方提供的包,优先联系开发者修复这个打包问题;实在要临时安装的话,可以试试
rpm -ivh --force abc.x86_64.rpm强制安装,但这个操作有风险,可能会搞乱系统目录的归属关系,谨慎使用。
内容的提问来源于stack exchange,提问作者Nagri
相关产品推荐
相关产品推荐

