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 목록을 사용하여 패키지 제어" 섹션.