MacOSでJavaパッケージ用のRPMをビルドする必要があります。私はhomebrewバージョン4.14.2.1のrpmbuildを使用しています。ツールチェーンが正しく設定され、有効なRPMが生成されました。一つの問題があります。 RPMのターゲットOS文字列は「darwin」です。なぜならそれがビルドされた場所だからです。そしてそれをデフォルトのLinux(CentOSだと思う)にインストールしようとすると、次のメッセージで失敗します。
Transaction check error:
package myrpm.noarch is intended for a different operating system
実際にRPMを照会してその理由を確認しました。
# rpm -qp --qf '%{os}\n' myrpm.noarch.rpm
darwin
ソースツリーを変更しないために必要な属性をローカルファイルに入れたいと思います.rpmrc
。
真のプラットフォームに依存しないRPMを取得するにはどうすればよいですか?
これを明確にするために、rpmにはJava 8 JREおよびPOSIX様ファイルシステムを持つすべてのシステムで実行されるソフトウェアとパスが含まれています。少なくとも darwin/MacOS および Redhat/CentOS/SuSE ユニバースにインストールできる必要があります。
答え1
noarch RPMを構築する方法は、実際には次のディレクティブを含むように仕様ファイルを変更することです。
BuildArch: noarch
設定ファイル(たとえば)で同じものを設定できるかどうかはわかりませんが、.rpmrc
そうすることはおそらく悪い考えです。しないでください。自分で必要としない場合は、これを行わないでください。この時点では、まだ「壊れた」(または互換性がないか不完全な)rpmbuild設定です。
仕様ファイル(.spec
拡張子を含むパッケージ名の付いたファイル)にアクセスできる場合は、noarchパッケージを正しく構築するためにこのディレクティブで更新することを検討してくださいBuildArch: noarch
。この場合、ビルドされた場所に関係なくうまく機能します。ローカル rpmbuild 構成に対する修正。