如果您可以像这样安装 RPM,则它是可重定位的:
rpm -ivh --prefix=/path/to/non/default/dir package-name.rpm
没有收到以下错误信息:
error: package package-name is not relocatable
这关联状态:
RPM 能够让用户在决定将软件包安装在系统上的哪个位置时有一定的自由度。但是,软件包构建者必须首先设计他们的软件包以赋予用户这种自由度。换句话说,可以安装到不同目录中的 RPM 软件包被称为可重定位的。请注意,并非所有 RPM 软件包都可以安装到另一个目录中。
但它并没有解释为什么软件包构建者不会允许用户自由决定在何处安装软件包。
那么,为什么让特定的包不可重定位是一个好主意?
答案1
事实上,你会发现大多数 RPM 包不可重新定位。
Fedora 打包指南有话要说:
强烈建议不要使用 RPM 生成可重定位软件包的功能。它很难正常工作,无法从安装程序或 yum 使用,并且如果遵循其他打包指南,通常没有必要。但是,如果您有充分的理由将软件包设为可重定位,则必须在软件包审查请求中说明此意图和理由。
这些是 RHEL 的上游软件包,您不太可能在官方 Fedora、RHEL/CentOS 或 EPEL 发行版存储库中找到可重定位软件包。
但是,您可能很少找到可重新定位的第三方 RPM。但是,没有好的方法来安装或管理它们,因为依赖项管理器无法处理它们,而且尝试重新定位包也没有什么意义。
答案2
我必须做一些类似的事情,虽然rpm --relocate
没有起作用(“错误:包不可重定位”),但rpm -i --prefix
确实起作用了。
我将它与t结合使用,--dbpath
将其安装到本地开发路径。