ディストリビューション間のバイナリRPMパッケージを構築するには?

ディストリビューション間のバイナリRPMパッケージを構築するには?

FedoraとopenSUSEで動作するディストリビューション間でバイナリRPMパッケージを構築しようとしています。Require:依存関係パッケージ名を設定するためにタグを使用しています。問題は、各GNU / Linuxディストリビューションストアのパッケージ名が異なることです。

読む:http://goo.gl/3MXSq、 '%if 0%{?suse_version} ' ステートメントを使用して、リリース間の .spec ファイルを提供します。つまり、依存関係リストは、インストール時間ではなくビルド時間に決定されます。

バイナリRPMパッケージ内に条件付きdepsリストを設定する方法はありますか?

答え1

はい、あなたがリンクしたopenSUSE Wikiページのリンクはこれについて詳しく説明しているので、これは間違いなく可能です。これを行ういくつかのベンダーもあります。Fedora / openSUSE用のgoogle-chrome RPMパッケージ(他のrpmディストリビューションでもうまく機能します)は、主要なrpmディストリビューションをカバーする1つのrpmパッケージしかありません。

しかし、あなたはあなたのニーズに注意を払う必要があります。Requires:必要なバイナリなどの一般的なパッケージを区別する必要があります。手動で追加する必要があります。ファイル名の要件(例Requires: /usr/bin/sendmail:)も無視され、一部のディストリビューションではファイルを少し異なる場所に配置するため、移植性がありません。

バージョンが指定されていない共通ライブラリパッケージの場合、Requires:これは通常常に間違っています。彼らrpmのビルド中に自動的に追加されました。まれに、主にライブラリパッケージに特定のバージョンを適用し、明示的なバージョン管理要件を追加する必要があります。これは例えば説明される。http://fedoraproject.org/wiki/Packaging:Guidelines#Explicit_Requires

答え2

絶対。申し訳ありません。 RPM内では条件付きdepsリストを実行できません。これを行う唯一の方法は、仕様ファイルからすべてのデプロイメント関連のデプスを削除することです。

答え3

いいえ、それは問題を処理する方法ではありません。各ディストリビューションごとに別々のパッケージを構築する必要があります。これを行うには、各ディストリビューションに少し異なる形状の仕様ファイルが必要であり、時にはディストリビューションの他のバージョンの現在のバージョンよりも多くを目指しています。

あなたの「条件」はさらに一歩進み、RPM自体内ではなく使用するRPMを選択する必要があります。必要に応じて、このプロセスを自動化する条件を持つスクリプトからこれらの仕様ファイルを生成できますが、仕様からパッケージを構築する場合は、配布固有の仕様が必要です。

関連情報