rpmbuild 中文手冊

Just4life發表於2016-04-22

版權宣告

本文譯者是一位開源理念的堅定支持者,所以本文雖然不是軟體,但是遵照開源的精神釋出。

  • 無擔保:本文譯者不保證譯文內容準確無誤,亦不承擔任何由於使用此文件所導致的損失。
  • 自由使用:任何人都可以自由的閱讀/連結/列印此文件,無需任何附加條件。
  • 名譽權:任何人都可以自由的轉載/引用/再創作此文件,但必須保留譯者署名並註明出處。

其他作品

本文譯者十分願意與他人分享勞動成果,如果你對我的其他翻譯作品或者技術文章有興趣,可以在如下位置檢視現有的作品集:

聯絡方式

由於譯者水平有限,因此不能保證譯文內容準確無誤。如果你發現了譯文中的錯誤(哪怕是錯別字也好),請來信指出,任何提高譯文質量的建議我都將虛心接納。

  • Email(QQ):70171448在QQ郵箱

RPMBUILD(8)                                System Manager's Manual                               RPMBUILD(8)

名字
       rpmbuild - 建立 RPM 包

語法
   建立包
       rpmbuild {-ba|-bb|-bp|-bc|-bi|-bl|-bs} [rpmbuild-options] SPECFILE ...
       rpmbuild {-ta|-tb|-tp|-tc|-ti|-tl|-ts} [rpmbuild-options] TARBALL ...
       rpmbuild {--rebuild|--recompile} SOURCEPKG ...

   其他
       rpmbuild --showrc

   rpmbuild-options
        [--buildroot DIRECTORY] [--clean] [--nobuild]
        [--rmsource] [--rmspec] [--short-circuit]
        [--noclean] [--nocheck] [--target PLATFORM]


描述
       rpmbuild 用於建立軟體的二進位制包和原始碼包。
       一個"包"包括檔案的歸檔以及用來安裝和解除安裝歸檔中檔案的後設資料。
       後設資料包括輔助指令碼、檔案屬性、以及相關的描述性資訊。
       軟體包有兩種:
       二進位制包,用來封裝已經編譯好的二進位制檔案;
       原始碼包,用來封裝原始碼和要構建二進位制包需要的資訊。

       必須選擇下列"模式"之一:
       (1)從 spec 構建, (2)從 Tar 構建, (3)重新構建, (4)重新編譯, (5)顯示配置

   通用選項
       下列選項可以用於所有不同的模式。

       -?, --help
              列印詳細的幫助資訊

       --version
              列印一行詳細的版本號資訊

       --quiet
              輸出儘可能少的資訊,通常只有錯誤資訊才會顯示出來。

       -v     輸出冗餘資訊,例如進度之類的資訊。

       -vv    輸出大量冗長的除錯資訊

       --rcfile FILELIST
              FILELIST 中冒號分隔的每個檔案都被 rpm 按順序讀取,從中獲得配置資訊。
              只有列表中的第一個檔案必須存在,波浪線將被替換為 $HOME 。預設值是:
              /usr/lib/rpm/rpmrc:/usr/lib/rpm/redhat/rpmrc:/etc/rpmrc:~/.rpmrc

       --pipe CMD
              將 rpm 的輸出通過管道送到 CMD 命令。

       --dbpath DIRECTORY
              使用 DIRECTORY 中的資料庫,而不是預設的 /var/lib/rpm

       --root DIRECTORY
              以 DIRECTORY 作為根檔案系統進行操作。這意味著將使用 DIRECTORY 中的資料庫來進行依賴性檢測,
              並且任何操作(比如安裝時的 %post 和構建時的 %prep)都將 chroot 到 DIRECTORY 下執行。

       -D, --define='MACRO EXPR'
              將 MACRO 巨集的值定義為 EXPR

   (1,2)構建選項
       構建命令的一般形式是

       rpmbuild -bSTAGE|-tSTAGE [rpmbuild-options] FILE ...

       如果需要根據某個 spec 檔案構建,那麼使用 -b 引數。
       如果需要根據某個 tar 歸檔(可能是壓縮過的)中的 spec 檔案構建,那麼使用 -t 引數。
       STAGE 指定了要完成的構建和打包的階段,必須是下列其中之一:

       a    構建二進位制包和原始碼包(在執行 %prep, %build, %install 之後)
       b    構建二進位制包(在執行 %prep, %build, %install 之後)
       p    執行 spec 檔案的"%prep"階段。這通常等價於解包原始碼並應用補丁。
       c    執行 spec 檔案的"%build"階段(在執行了 %prep 之後)。這通常等價於執行了"make"。
       i    執行 spec 檔案的"%install"階段(在執行了 %prep, %build 之後)。這通常等價於執行了"make install"。
       l    執行一次"列表檢查"。spec 檔案的"%files"段落中的巨集被擴充套件,檢測是否每個檔案都存在。
       s    只構建原始碼包

       此外,還可以使用下列選項:

       --buildroot DIRECTORY
              在構建時,使用 DIRECTORY 目錄覆蓋預設的 BuildRoot 值

       --clean
              在打包完成之後刪除構建樹

       --nobuild
              不執行任何實際的構建步驟。可用於測試 spec 檔案。

       --noclean
              不執行 spec 檔案的"%clean"階段(即使它確實存在)。

       --nocheck
              不執行 spec 檔案的"%check"階段(即使它確實存在)。

       --nodeps
              不檢查編譯依賴條件是否滿足

       --rmsource
              在構建後刪除原始碼(也可以單獨使用,例如"rpmbuild --rmsource foo.spec")

       --rmspec
              在構建之後刪除 spec 檔案(也可以單獨使用,例如"rpmbuild --rmspec foo.spec")

       --short-circuit
              直接跳到指定階段(也就是跳過指定階段前面的所有步驟),只有與 c 或 i 或 b 連用才有意義。
              僅用於本地除錯。以此種方法構建出的包將被標記為"依賴關係不滿足",以阻止其被正常使用。

       --target PLATFORM
              在構建時,將 PLATFORM 解析為 arch-vendor-os ,並以此設定巨集 %_target, %_target_cpu, %_target_os 的值。

   (3,4)重新構建和重新編譯選項
       有兩種構建方法:

       rpmbuild --rebuild|--recompile SOURCEPKG ...

       使用 --recompile 的話,rpmbuild 將安裝指定的原始碼包(SOURCEPKG),然後進行準備、編譯、安裝。
       而使用 --rebuild 的話,還會在 --recompile 的基礎上再額外構建一個新的二進位制包。
       在構建結束時,構建目錄將被刪除(就好像用了 --clean),原始碼和 spec 檔案也將被刪除。

   (5)顯示配置

       rpmbuild --showrc

       將顯示 rpmbuild 使用的、在 rpmrc 和 macros 配置檔案中定義的選項的值。

檔案
   rpmrc 配置檔案
       /usr/lib/rpm/rpmrc
       /usr/lib/rpm/redhat/rpmrc
       /etc/rpmrc
       ~/.rpmrc

   Macro 配置檔案
       /usr/lib/rpm/macros
       /usr/lib/rpm/redhat/macros
       /etc/rpm/macros
       ~/.rpmmacros

   臨時檔案
       /var/tmp/rpm*

參見
       gendiff(1),
       popt(3),
       rpm(8),
       rpm2cpio(8),
       rpmkeys(8)
       rpmspec(8),
       rpmsign(8),

       rpmbuild --help

       http://www.rpm.org/

相關文章