我有一个旧的供应商提供的软件包,我试图在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中执行任何安装后的脚本等。
希望帮助!