基本パッケージなしでRPMサブパッケージを構築する

基本パッケージなしでRPMサブパッケージを構築する

RPM文書/指針によると(http://ftp.rpm.org/max-rpm/ch-rpm-subpack.html)サブパッケージを使用して、単一のSPECファイルから複数のRPMパッケージを構築できます。上記のリンクでは、foo、foo-server、foo-client、および bazlib パッケージがビルドされ、パッケージ化されます。

例では、SPECファイルにはfooというデフォルト/親パッケージがあります(サーバー、クライアント、bazlibはサブパッケージです)。

Name: foo
Version: 2.7
Release: 1
Source: foo-2.7.tgz
License: probably not
Summary: The foo app, and the baz library needed to build it
Group: bogus/junque
%description
This is the long description of the foo app, and the baz library needed to
build it...

%package server
Summary: The foo server
Group: bogus/junque
%description server
This is the long description for the foo server...

%package client
Summary: The foo client
Group: bogus/junque
%description client
This is the long description for the foo client...

%package -n bazlib
Version: 5.6
Summary: The baz library
Group: bogus/junque
%description -n bazlib
This is the long description for the bazlib...

...snipped

これらのパッケージをビルドすると、次のパッケージが生成されます。

# rpmbuild -ba foo-2.7.spec
* Package: foo
* Package: foo-server
* Package: foo-client
* Package: bazlib

...snipped

いくつかの問題:

1.) 基本/親パッケージ foo には、RPIO の追加フラグ/属性などの特別な目的がありますか?それともRPMの「視点」では、fooパッケージはすべてのサブパッケージと同じですか?それでは、これらのパッケージをサブパッケージ(単語)と呼ぶのはなぜですか?息子バッグは特別な関係を意味します)?

2.)サブパッケージを介して複数のバイナリ(toola、toolb、toolc)を含む製品をパッケージ化するとします。基本/親パッケージを無効にする方法はありますか?私の場合、すべてのツールキットが同じように扱われるので、特別な基本/親パッケージは必要ありません(この質問は質問1に関連しています)。

ツール(デフォルト/親パッケージ)とtoola、toolb、toolcのみをビルドできますが、リポジトリにツールを追加することはできません。しかし、これはなぜか間違っているようです(おそらくtoolaをデフォルトパッケージとして使用し、toolbとtoolcをサブパッケージとして使用しますか?)。

ベストアンサー1

  1. バイナリRPMに関する限り、メインパッケージとそのサブパッケージは同じです。サブパッケージをこう呼ぶ理由はいくつかあります。サブパッケージは基本パッケージの「バリエーション」として記述され、サブパッケージから多くのフィールドを継承し(再定義できます)、デフォルトでソースから名前を取得します。パッケージの観点から見ると、これはソースコードパッケージ全体のサブパッケージであり、基本パッケージと同じ名前です。

  2. デフォルトのパッケージが必要ない場合は、リストが空で%files生成されないことを確認してください。バラより「%filesリストを使用したパッケージの制御」セクション

おすすめ記事