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
バイナリRPMに関する限り、メインパッケージとそのサブパッケージは同じです。サブパッケージをこう呼ぶ理由はいくつかあります。サブパッケージは基本パッケージの「バリエーション」として記述され、サブパッケージから多くのフィールドを継承し(再定義できます)、デフォルトでソースから名前を取得します。パッケージの観点から見ると、これはソースコードパッケージ全体のサブパッケージであり、基本パッケージと同じ名前です。
デフォルトのパッケージが必要ない場合は、リストが空で
%files
生成されないことを確認してください。バラより「%filesリストを使用したパッケージの制御」セクション。