如何制作可重定位的rpm?

Soh*_*ohi 1 java rpm maven

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

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

sudo rpm -qp --queryformat "%{prefixes}\n" java-hbase-processor-1.0-SNAPSHOT20160330060627.noarch.rpm 
Run Code Online (Sandbox Code Playgroud)

我得到了 ==> /var

如果我运行以下命令:

rpm -qi java-hbase-processor | grep Relocations
Run Code Online (Sandbox Code Playgroud)

我得到:重定位:/opt /tmp 重定位:/var /tmp

以上都表明 rpm 是可重定位的。但是如果运行安装命令

sudo rpm -i --prefix=/home/sohanvir/ java-hbase-processor-1.0-SNAPSHOT20160330060627.noarch.rpm
Run Code Online (Sandbox Code Playgroud)

它会给出错误消息:

错误:包 java-hbase-processor 不可重定位

提前致谢 。

Tho*_*key 5

根据RPM.org

默认情况下,RPM 将在 spec 文件中列出的前缀目录中安装一个可重定位的包。您可以在 RPM 安装命令行上使用“--prefix <dir>覆盖它。例如,如果有问题的包要安装在“/opt”中,但那里没有足够的磁盘空间(并且它是一个可重定位的包),则可以安装“--prefix /usr/opt” .

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

rpm ... --relocate /opt=/usr/opt --relocate /etc=/usr/etc ...

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

但是,它继续说在构建可重定位的 RPM 时可能会出现很多问题(即使您看到了Prefix标签)。如果您只想从 RPM 中提取文件,可以使用一些工具(例如rpmunpackrpm2cpiounrpm)。

进一步阅读: