我有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-processor不可重定位
提前致谢。
答案 0 :(得分:4)
根据RPM.org:
默认情况下,RPM会在spec文件中列出的前缀目录中安装可重定位的包。您可以使用“ - 前缀
<dir>
”在RPM安装命令行上覆盖此值。例如,如果有问题的软件包将安装在“/ opt”中,但您没有足够的磁盘空间(并且它是可重定位的软件包),则可以安装它“ - prefix / usr /选择“如果有多个前缀,您可以使用以下语法分别重新定位每个前缀:
rpm ... --relocate /opt=/usr/opt --relocate /etc=/usr/etc ...
如果没有重新定位任何前缀,可以在命令行中跳过它们
但是,它继续说在构建可重定位的RPM时可能会出现许多问题(即使您看到Prefix
标记)。如果您只想从RPM中提取文件,可以使用相应的工具(例如rpmunpack
,rpm2cpio
或unrpm
)。
进一步阅读:
Chapter 15. Making a Relocatable Package
可重定位包是一种标准的包,除了一个。不同之处在于前缀标记。将此标记添加到spec文件时,RPM将尝试构建可重定位的包。
注意“尝试”一词。在成功构建可重定位包之前,必须满足一些条件,本章将全部介绍它们。但首先,让我们看看RPM如何重新定位一个包。并且包重定位核心的一个组件是前缀标记。