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