如何强制 RPM 安装软件包而不替换冲突的文件

如何强制 RPM 安装软件包而不替换冲突的文件

我有一个较旧的供应商提供的软件包,正尝试将其安装在 CentOS 7 上。它将内容安装到 /usr/lib 中,但与 /usr/lib 目录本身存在冲突。

安装的 /usr/lib 目录:

ls -ld /usr/lib
dr-xr-xr-x. 42 root root 4096 Jun 10 08:44 /usr/lib   

包中指定的 /usr/lib 目录:

rpm -qlpv <package file>
drwxr-xr-x    2 root    root  0 Jun 22  2006 /usr/lib

我可以使用 --replacefiles 和 rpm 来让它继续运行,但这实际上不是这里应该做的事情。相反,我希望 rpm 跳过安装 /usr/lib 目录(毕竟它已经在那里了),只安装内容。

--excludepath 选项实际上似乎没有执行任何操作(我仍然收到错误),并且(根据 -vv 输出)无论如何都会排除大部分包。

目前,在测试环境中,我可以执行--replacefiles,但我觉得必须有一些“更正确”的方法来处理这种情况。

注意:获取更新的供应商包在我的待办事项列表中,但一段时间内不会发生,所以我需要一个更好的近期解决方案。

答案1

我建议使用 将其安装到另一个目录中,rpm --prefix然后提取所需的内容。或者,您也可以使用 直接提取它rpm2pcio package.rpm | cpio -idmv

使用--prefix至少具有在 RPM 中执行任何安装后脚本等的好处。

希望有帮助!

相关内容