8

MavenでrpmをビルドするJavaプロジェクトがあります。noarchパケットを作成する必要がありますが、具体的なarchが表示されます。MacOsXのmacports経由でrpm(4.4.9または5.2.0)をインストールし、mavenrpmプラグインからコマンドを実行します。

sudo rpmbuild -bb -v --buildroot / path / to / project / buildroot --target noarch java-search-qt.spec
ターゲットプラットフォームの構築:noarch
実行中(%install):/ 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-compress
+ / 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
Required(pre):/ 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プラグインはオプション「--targetnoarch」を使用しますが、rpmbuildはそれを完全に無視します。noarch.rpmファイルが必要ですが、rpmbuildが4.4.9バージョンとx86でi386を作成するのはなぜですか?

アップデート

呼び出しrpmbuilderの1つの動作するバリアントを見つけました。ビルド*.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

pom.xml私は MacOSX でビルドした経験はありませんが、参照としてここにファイルを投稿すると思いました。

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 に答える