![我们可以在重新打包期间使不可重新定位的 RPM 包变得可重新定位吗?](https://linux22.com/image/1352606/%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E5%9C%A8%E9%87%8D%E6%96%B0%E6%89%93%E5%8C%85%E6%9C%9F%E9%97%B4%E4%BD%BF%E4%B8%8D%E5%8F%AF%E9%87%8D%E6%96%B0%E5%AE%9A%E4%BD%8D%E7%9A%84%20RPM%20%E5%8C%85%E5%8F%98%E5%BE%97%E5%8F%AF%E9%87%8D%E6%96%B0%E5%AE%9A%E4%BD%8D%E5%90%97%EF%BC%9F.png)
我正在尝试在 RHEL4 盒子上安装一个包,该包是不可重定位的。
我需要将它放在自定义位置,因为有一些其他应用程序需要链接到它。
所以我想知道是否可以将包安装到默认位置,然后使用 -e -repackage 选项将其删除,并在此步骤中使其可重定位。
如果可以做到这一点,您能否指定我应该使用哪些选项?
如果这不可能的话,您能否指定其他方法?
答案1
可重定位的软件包已被弃用,因为它们的实用性有限(并且很难创建,除非代码本身确实与文件系统位置无关)。仅仅安装、移动东西并从那里打包不太可能奏效(配置文件路径被硬连线到可执行文件中,数据文件的位置是固定的;并且很多必须更改其他内容)。如果源使用标准./configure; make; make install
舞蹈,最好的办法是获取源 RPM,安装该 RPM,破解 SPEC 文件以配置备用位置,然后重建。只需确保检查包的依赖关系,并为其指定一个不同的名称(例如package-localized
),以免与官方名称冲突。保留 SPEC 文件,这样每当上游更新包时,您都可以重新创建它。