为什么有些RPM的“不可重新定位”?

如果您可以像这样安装RPM,则RPM可以重定位:

rpm -ivh --prefix=/path/to/non/default/dir package-name.rpm 

没有得到以下错误信息:

 error: package package-name is not relocatable 

此链接指出:

RPM有能力给用户一些决定软件包安装在系统上的空间。 然而,软件包build设者必须首先devise他们的软件包,给用户这种自由。 换句话说,可以安装到不同目录的RPM软件包被称为可重定位。 请注意,并非所有的RPM软件包都可以安装到另一个目录中。

但是,这并不能解释为什么一个软件包生成器不希望允许用户自由决定在哪里安装软件包。

那么,为什么让一个特定的包不能重新定位呢?

实际上,大多数RPM包都是不可重定位的

Fedora打包指南有这样的说法 :

强烈build议不要使用RPM的工具来生成可重新定位的软件包。 从安装人员或百胜集团难以正常工作,无法使用,而且如果遵循其他包装指导方针,通常也不是必需的。 但是,万一您有充分的理由重新定位程序包,您必须在请求程序包复审时声明这一意图和推理。

这些是RHEL的上游软件包,您不太可能在官方的Fedora,RHEL / CentOS或EPEL分发存储库中find可重新定位的软件包。

但是,您可能很less发现可重定位的第三方RPM。 但是一旦安装完成,没有好的方法来安装或pipe理它们,因为依赖关系pipe理器无法处理它们,无论如何,尝试重新定位程序包没有什么意义。