rpm仕様でRequiresをBuildRequiresに接続するには?

rpm仕様でRequiresをBuildRequiresに接続するには?

次の項目があるとしますRequires

Requires: a
Requires: b
Requires: c

今私が言いたいことは次のとおりです。

BuildRequires: <<Requires>>

これは、ビルドに必要なすべてをインストールする必要があることを意味します。したがって、最初のセクションからアイテムを削除または追加すると、2番目のセクションが「接続」され、編集する必要はありません。

問題は——この依存関係をどのように表現しますか?

これらの計画はパブリックパッケージには提供されていないことがわかりますが、家族向けに要求されます。私と私の家族のためのエクスプレスパッケージだけを準備して配布することはできません。

答え1

簡単な答えは、両方の場所を置き換えるマクロを定義することです。

%define my_common_requires package-1, package-2, package-3

BuildRequires: %{my_common_requires}
Requires:      %{my_common_requires}

また、2行のうちの1つに存在するコンテンツを手動で定義することもできますが、両方には存在できません。

答え2

そうだ

BuildRequires:  %{requires}

「ただ動作します」 - 少なくともRPMバージョンが4.8.0のRHEL6では動作します。

答え3

許す

  1. Pパッケージ名です。
  2. R1、、R2...は対応Rnする要件です。
  3. RB1、、RB2...はRBmBuildRequiresの一部であり、、、R1...R2Rn他のRequiresです。

今できる

  1. PAR1Requires、、R2...を含むパッケージを作成します。Rnそれ以外の場合、パッケージは空です。
  2. Requiresが、BuildRequiresが、、、、...になるようにP編集します。PAPARB1RB2RBm

私はこれが良いアイデアだとは思わない。

MyUsefulPackage
Requires: gcc
BuildRequires: gcc

~になる

MyUsefulPackage
Requires: MyUsefulRequires
BuildRequires: MyUsefulRequires

そして

MyUsefulRequires
Requires: gcc

別のパッケージを追加するには、make次のようになります。 MyUsefulPackage Requires: MyUsefulRequires BuildRequires: MyUsefulRequires

そして

MyUsefulRequires
Requires: gcc
Requires: make

MyUsefulPackage の依存関係要件を変更する必要はありません。 MyUsefulRequiresを一度だけ変更するだけです。

関連情報