プラットフォームに依存しないRPMを提供するためのMacOSベースのrpmbuildの設定

プラットフォームに依存しないRPMを提供するためのMacOSベースのrpmbuildの設定

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 構成に対する修正。

おすすめ記事