【问题标题】:MacOsX rpmbuild --target noarch doesn't workMacOsX rpmbuild --target noarch 不起作用
【发布时间】:2011-12-24 12:05:02
【问题描述】:

我有一个用 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

我无法理解。有什么想法吗?

附:对不起我的英语,这对我来说很难。

【问题讨论】:

    标签: java rpmbuild


    【解决方案1】:

    我有不同的版本,但在 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 上安装愉快。

    【讨论】:

      【解决方案2】:

      我发现了错误!

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

      【讨论】:

        【解决方案3】:

        我没有任何在 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
        

        希望这会有所帮助。

        【讨论】:

        • 谢谢,但是插件没有问题 - 二进制工具rpmbuild在'--target'选项有奇怪的行为
        • 根据 RPM 插件默认为noarch。您使用的是哪个版本的 rpmbuild?我们使用的是 RPM 版本 4.4.2。 mojo.codehaus.org/rpm-maven-plugin/ident-params.html#needarch
        • 您并没有指定源架构,对吧? mojo.codehaus.org/rpm-maven-plugin/…
        • 当前可用的 macport rpm 版本是 4.4.9,我使用它。据我所知,最新版本为 5.3.x。是的,我没有指定架构,因为我需要 noarch!在 linux 上工作正常,结果我看到 *.noarch.rpm 文件。但仅在 mac rpmbuild 上创建 *.i386.rpm 文件。我尝试将 targetArchitecture 设置为 noarch,但它被 builder 忽略了。
        • 听起来你做的都是正确的。很抱歉不能帮上忙。这是一个有趣的话题。他们使用: `--target 'noarch-apple-mac os x' 两边都有 *。祝你好运。 old.nabble.com/…
        猜你喜欢
        • 2013-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-08
        相关资源
        最近更新 更多