Packaging
建構沒有基礎包的 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 相關)。
我想有可能只建構工具(基礎/父包)和工具,工具b,工具,但不將工具添加到儲存庫。但這在某種程度上感覺是錯誤的(也許可以將 toola 用作基礎包,將 toolb 和 toolc 用作子包?)。
- 就二進制 RPM 而言,主包和它的子包是相等的。我可以想到子包被稱為子包的幾個原因:它們被描述為主包的“變體”,從中繼承了許多欄位(儘管它們可以被覆蓋),甚至預設取名;從源碼包的角度來看,它們是整個源碼包的子包,與主包同名。
- 如果不需要主包,請確保其
%files
列表為空,並且不會生成。請參閱“使用 %files 列表控制包”部分。