我有一个较旧的供应商提供的软件包,我正试图在 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,但我觉得必须有一些“更正确”的方法来处理这种情况。
注意:获取更新的供应商包在我的 TODO 列表中,但在一段时间内不会发生,所以我需要一个更好的近期解决方案。
我建议将它安装到另一个目录中,
rpm --prefix
然后取出你需要的东西。或者,您可以直接使用rpm2pcio package.rpm | cpio -idmv
.使用
--prefix
至少有在 RPM 中执行任何安装后脚本等的好处。希望有帮助!