Java 如何使可重定位rpm?

Java 如何使可重定位rpm?,java,maven,rpm,Java,Maven,Rpm,我有一个带有pom.xml的java应用程序。我正在制作带有前缀标签的rpm包 当我查询rpm的前缀标记时: sudo rpm -qp --queryformat "%{prefixes}\n" java-hbase-processor-1.0-SNAPSHOT20160330060627.noarch.rpm 我得到==>/var 如果我运行以下命令: rpm -qi java-hbase-processor | grep Relocations 我得到: 重新定位:/opt/tmp 重

我有一个带有pom.xml的java应用程序。我正在制作带有前缀标签的rpm包

当我查询rpm的前缀标记时:

sudo rpm -qp --queryformat "%{prefixes}\n" java-hbase-processor-1.0-SNAPSHOT20160330060627.noarch.rpm 
我得到==>/var

如果我运行以下命令:

rpm -qi java-hbase-processor | grep Relocations
我得到: 重新定位:/opt/tmp 重新定位:/var/tmp

所有这些都表明rpm是可重新定位的。但是如果运行install命令

sudo rpm -i --prefix=/home/sohanvir/ java-hbase-processor-1.0-SNAPSHOT20160330060627.noarch.rpm
它将给出错误消息:

错误:包java hbase处理器不可重新定位

提前感谢。

根据:

默认情况下,RPM将在规范文件中列出的前缀目录中安装一个可重新定位的包。您可以在RPM安装命令行上用“-prefix
”覆盖此选项。例如,如果所讨论的包将安装在“/opt”中,但您没有足够的磁盘空间(并且它是一个可重新定位的包),则可以安装它“-prefix/usr/opt”

如果有多个前缀,可以使用以下语法分别重新定位每个前缀:

rpm--重新定位/opt=/usr/opt——重新定位/etc=/usr/etc…

如果没有重新定位任何前缀,可以在命令行上跳过它们

然而,它接着说,在构建可重定位RPM时可能会出现一些问题(即使您看到
前缀
标记)。如果您只想从RPM中提取文件,则有相应的工具(例如,或
unrpm

进一步阅读:

  • 可重新定位的包是一个在各个方面都是标准的包,只保留一个。区别在于前缀标记。将此标记添加到规范文件时,RPM将尝试构建可重新定位的包

    注意“尝试”一词。在成功构建可迁移包之前,必须满足一些条件,本章将介绍所有这些条件。但首先,让我们看看RPM如何准确地重新定位包。包重新定位的核心部分是前缀标记

根据:

默认情况下,RPM将在规范文件中列出的前缀目录中安装一个可重新定位的包。您可以在RPM安装命令行上用“-prefix
”覆盖此选项。例如,如果所讨论的包将安装在“/opt”中,但您没有足够的磁盘空间(并且它是一个可重新定位的包),则可以安装它“-prefix/usr/opt”

如果有多个前缀,可以使用以下语法分别重新定位每个前缀:

rpm--重新定位/opt=/usr/opt——重新定位/etc=/usr/etc…

如果没有重新定位任何前缀,可以在命令行上跳过它们

然而,它接着说,在构建可重定位RPM时可能会出现一些问题(即使您看到
前缀
标记)。如果您只想从RPM中提取文件,则有相应的工具(例如,或
unrpm

进一步阅读:

  • 可重新定位的包是一个在各个方面都是标准的包,只保留一个。区别在于前缀标记。将此标记添加到规范文件时,RPM将尝试构建可重新定位的包

    注意“尝试”一词。在成功构建可迁移包之前,必须满足一些条件,本章将介绍所有这些条件。但首先,让我们看看RPM如何准确地重新定位包。包重新定位的核心部分是前缀标记


您只需要提取一些文件吗?您只需要提取一些文件吗?谢谢您的回答。它真的很有用。最后,我能够使用sudorpm重新定位--install--relocate=感谢您的回答。它真的很有用。最后,我能够使用sudoRPM重新定位--安装--重新定位=