如何强制RPM安装软件包,而不是replace冲突的文件

我有一个旧的供应商提供的软件包,我试图在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输出)将会排除大部分的包。

目前,在testing环境中,我可以做 – replace文件,但是我觉得必须有一些“更正确”的方式来处理这种情况。

注意:获取更新的供应商软件包是在我的TODO列表上,但是一段时间不会发生,所以我需要一个更好的近期解决scheme。

我build议使用rpm --prefix将其安装到另一个目录中,并提取所需的东西。 或者,您可以直接使用rpm2pcio package.rpm | cpio -idmv提取它 rpm2pcio package.rpm | cpio -idmv

使用--prefix至less可以在RPM中执行任何安装后的脚本等。

希望帮助!