RPM的魔力在於 所有構建軟件包的說明都包含在單個SPEC文件中。 當然,首先您必須了解它,有時這並不容易... |
什麼是SPEC文件?
基本上,它是指示如何構建,安裝和卸載軟件包的文件。
我們將為您提供的說明分為多個階段,這些階段又是宏。 這些是基本階段:
- 準備百分比:未壓縮源並應用了補丁。
- 建造百分比:二進製文件已編譯。
- %檢查:確認已正確編譯。
- 安裝百分比:進行安裝練習。
- %個文件:列出將出現在軟件包中的所有文件。 它還常用於分配屬性。 如果有任何未列出的文件,則不會生成。
一些SPEC可能沒有某些階段。 它們不是強制性的.
還有其他階段稱為 腳本。 它們之所以特別,是因為它們在構建軟件包時不執行,而是在安裝或卸載時執行。 您甚至可以安排觸發器在安裝另一個軟件包時運行。 這是RPM優於DEB文件的最大優勢之一。
RPM最大的麻煩在於 一切都具有相同的語法。 也就是說,所有這些特殊字詞前都有一個百分號(%)是RPM宏,但是有各種宏:
- 功能(%設置,%配置,%補丁…)
- 預定義變量(%_bindir,%dist…)
- 在SPEC本身中定義的變量(%buildroot,%name,%version ...)
- 靜態部分(%說明,%更新日誌…)
- 階段(%生成,%安裝...)
- 觸發器(%triggerin,%triggerpostun…)
- 腳本(%pretrans,%postun…)
要知道如何使用某個宏,唯一的方法是 查閱文檔。 好吧,實際上您總是可以使用其他技巧,例如 看看SPEC是如何由與您類似的包裝製成的,或嘗試和錯誤方法。 一對 實用命令:
rpmbuild --showrc#顯示所有宏
rpmbuild --eval =“%macro_name”#顯示擴展的宏
如果宏周圍有括號,則它們是相同的。 如果括號後面有問號,則沒有任何可擴展的地方,它將為空白。 例如, 1%{?Dist} 將擴展到 1.FC16 在Fedora 16上,但在另一個發行版上 1.
宏甚至在註釋中擴展。 為防止其擴散,請連續使用兩個百分比。 例如, %% 設定 將作為 % 建立 實際上是通過擴展。
胃口大開
我們已經在本教程的第二部分中了,您仍然不知道我們將打包什麼,因此下面的視頻讓您大開眼界:
我們要打包的遊戲是 高度上癮。 我建議您不要完成本教程,以防您浪費了數小時來玩這個遊戲而沒有時間...