我有带有 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 不可重定位
提前致谢 。
根据RPM.org:
默认情况下,RPM 将在 spec 文件中列出的前缀目录中安装一个可重定位的包。您可以在 RPM 安装命令行上使用“--prefix
<dir>”覆盖它。例如,如果有问题的包要安装在“/opt”中,但那里没有足够的磁盘空间(并且它是一个可重定位的包),则可以安装“--prefix /usr/opt” .如果有多个前缀,您可以使用以下语法分别重新定位每个前缀:
rpm ... --relocate /opt=/usr/opt --relocate /etc=/usr/etc ...如果任何前缀没有被重新定位,它们可以在命令行上跳过
但是,它继续说在构建可重定位的 RPM 时可能会出现很多问题(即使您看到了Prefix标签)。如果您只想从 RPM 中提取文件,可以使用一些工具(例如rpmunpack、rpm2cpio或unrpm)。
进一步阅读:
一个可重定位的包是一种在各方面都是标准的包,除了一个。区别在于前缀标签。当这个标签被添加到一个规范文件中时,RPM 将尝试构建一个可重定位的包。
请注意“尝试”一词。在成功构建可重定位包之前,必须满足一些条件,本章将涵盖所有这些条件。但首先,让我们看看 RPM 是如何重新定位一个包的。包重定位的核心组件之一是前缀标记。
| 归档时间: |
|
| 查看次数: |
8330 次 |
| 最近记录: |