8

我有一个由 maven 构建 rpm 的 java 项目。需要创建 noarch 数据包,但我看到具体的拱门。我通过 MacOsX 上的 macports 安装 rpm(4.4.9 或 5.2.0),并从 maven rpm 插件运行命令:

sudo rpmbuild -bb -v --buildroot /path/to/project/buildroot --target noarch java-search-qt.spec
构建目标平台:noarch
执行(%安装):/bin/bash -e /tmp/rpm-tmp.69257
+ umask 022
+ cd /opt/local/src/macports/BUILD
+ /bin/rm -rf /path/to/project/target/rpm/project/buildroot
+ /bin/rm -rf /path/to/project/target/rpm/project/buildroot
+ '[' -e /path/to/project/target/rpm/project/buildroot ']'
+ mv /path/to/project/target/rpm/project/tmp-buildroot /path/to/project/target/rpm/project/buildroot
+ /opt/local/lib/rpm/brp-压缩
+ /opt/local/lib/rpm/brp-strip
+ /opt/local/lib/rpm/brp-strip-static-archive
+ /opt/local/lib/rpm/brp-strip-comment-note
+ /opt/local/lib/rpm/brp-nobuildrootpath
处理文件:java-search-qt-1.0.17-1
发现提供:/opt/local/lib/rpm/find-provides
查找要求:/opt/local/lib/rpm/find-requires
需要(interp):/bin/bash /bin/bash /bin/bash /bin/bash
需要(验证):/bin/bash
需要(预):/bin/bash
要求(帖子):/bin/bash
要求(postun):/bin/bash
检查未打包的文件:/opt/local/lib/rpm/check-files /path/to/project/target/rpm/project/buildroot
写道:/opt/local/src/macports/RPMS/i386/project.i386.rpm

Maven 插件使用选项“--target noarch”,但 rpmbuild 完全忽略它。预期 noarch.rpm 文件,为什么 rpmbuild 在 4.4.9 版本和 x86 上创建 i386?

更新

我发现调用 rpmbuilder 的一种工作变体,构建 *.noarch.rpm 文件:

rpmbuild -bb --target noarch-linux-pc project.spec

另一个变体,构建 *.i386.rpm 文件:

rpmbuild -bb --buildroot /path/to/buildroot --target noarch-linux-pc project.spec
rpmbuild -bb --define '_topdir /path/to/topdir' --target noarch-linux-pc project.spec

我无法理解。有任何想法吗?

PS对不起我的英语,这对我来说是困难的语言。

4

3 回答 3

6

我有不同版本的一切,但在 OS X 上,使用 RPM 5.4.14 和 rpm-maven-plugin 2.1-alpha-3,我可以通过指定为 Linux 创建一个 noarch RPM:

<needarch>noarch</needarch>
<targetOS>linux</targetOS>

rpm-maven-plugin 说:

[INFO] Building target platforms: noarch-apple-linux

从命令行检查包,一切正常:

rpm -qp --qf 'Arch:%{ARCH} OS:%{OS}\n' my-rpm-0.0.1-1.noarch.rpm 
Arch:noarch OS:linux

...结果可以在 Linux 上愉快地安装。

于 2014-02-08T09:59:35.037 回答
5

我发现了错误!

maven-rpm-plugin 工具很烂。该软件包包含 RPMHelper 类,并使用 bash 命令生成器。rpmbuild 工具需要强大的参数排序,并且此类忽略所有规则。我更改了参数顺序,现在我已经正确构建了 rpm 数据包。据我所知,codehaus 命令不再支持。我认为我们需要在 github 上创建一个分支。

于 2011-11-09T17:08:27.857 回答
1

我没有任何在 MacOSX 上构建的经验,但我想我会pom.xml在这里发布我们的文件作为参考:

http://pastebin.com/dHVA4yZ1

我们在 CentOS Linux 下使用的 maven 命令行是:

mvn clean compile rpm:attached-rpm deploy

这将部署我们的 RPM 并创建:

target/rpm/mprew-behavior/RPMS/noarch/mprew-behavior-2.12.0s-19068.noarch.rpm

希望这会有所帮助。

于 2011-11-08T14:46:27.760 回答