原创者为Kaio 因為是我寫的,所以沒有版權問題,歡迎留名轉貼。 ![]() 這是 copy-and-paste 過來的,有些地方的超連結丢了,也有些排版也可能看得不太舒服,這裏可以得到原版: https://fedoraproject.org/wiki/Zh/Do...95%99%E5%AD%B8 Fedora 打包教學 閲讀注意事項 * 本指南是以 Fedora 8 為基礎,並不保證能在其他版本上實作。 * 如果沒有注明需要管理目帳號的命令,一律以個人帳號執行。 * 一切因為依照以下操作步驟而引致任何損失,本文所有參與編輯者恕不負責。 前言 這不是一篇完整的 RPM 打包參考文,而是一篇中文的打包導引文。您不能期望單純的從這篇文章中找到所有打包應用到的知識與技巧,這裏提供的只是概略筆者以自己經驗歸納出的打包過 程;世上高手何其多,網上文檔何其精,筆者非常鼓勵大家多參考多思考多實作。請緊學習包含吸收知識與實踐,缺一不可,邊做邊學才能算是實務、才能算是學 習;多看文檔、虚心發問、享受過程、累積成果。 推薦參考文章 * Maximum RPM * Packaging Guidelines * Valid RPM Macros * Jason Corley's RPM Macros Table 事前準備工作 1. 安裝 rpmbuild、rpmdevtools、rpmlint 包。 rpmbuild 是執行打包的工具包, rpmdevtools 是提高打包後勤工作效率的工具包, rpmlint 為檢查 spec 規格檔案正確性的工具包。 2. 執行 rpmdev-setuptree ,打包用檔案系統 rpmbuild/{BUILD,RPMS SOURCES,SPECS,SRPMS} 會在 ~/ 被自動建立。 3. 移到 ~/rpmbuile/SPECS/ ,執行 rpmdev-newspec 。一個新的 spec 規格檔案會被自動建立,它是一個純文字檔,裏面包含各種對 RPM 安裝包詳細設定;設定包括軟件本身的資訊、編譯/安裝/移除步驟、修改記錄等等内容。 4. [請進入下一部分] 編輯 spec 規格檔案 以下是剛打包的 emesene RPM 的 .spec 檔案。因為它不可能包含所有會用到的東西,所以只可以作為參考;在裏面作了大量的注解,應該可以幫助瞭解大致結構: 定義這些路徑的原因是省略 SPEC 檔接下來會用到的篇幅。 %define appdir %{_datadir}/%{name} 一些 %{__abc} 的是系統常用工具的macro,這樣做能令系統在安裝該 RPM 時才找出工具的位置,防止工具儲存位置的更改。 %install 包裝 SRPM 測試源碼包 1. 在 ~/rpmbuild/SPECS 執行 rpmbuild -ba 你的軟件名稱.specs ,測試包裝 RPM 和 SRPM 包(也可以只執行 rpmbuild -bs 你的軟件名稱.specs 只測試 SRPM 包) 2. 如有包裝期間有錯誤回饋或發生其他問題,可以檢查 ~/rpmbuild/SOURCES 內的檔案、 .spec 檔、或執行 rpmbuild -bp 你的軟件名稱.specs 後檢查 ~/rpmbuild/BUILD 內的檔案。 3. 其實有比較懶惰的辦法(在從 cvs 伺服器 check out 出來文件夾內以 make [command] 做相同的動作,只是要有全部重新 check out 的心理準備);請在 cvs check out 出來的文件夾內輸入 make help 獲得更多資訊。 4. [請進入下一部分] 新包審批程序 一個軟件進入 Fedora 的 repository 讓公眾更新是需要經過一系列的審批程序的。 1. 確保 SRPM 源碼準備好。(用 rpmlint 檢查 .spec 規格檔) 2. 在 Red Hat 的 Bugzilla 系統建立一個新的 Bug 檔案。 3. 經過 Fedora 審批人確保 SRPM 源碼包符合標準後,會在 Bug 內授與一個審批通過的 fedora‑review ACK+ 。 4. 最後包裝人可以向有關有 cvs 管理權限的人員要求(把 fedora‑cvs flag 調成 + ),在 Fedora repository 建立一該軟件的 tree。 5. [請進入下一部分] 匯入 SRPM 源碼包 1. 進入從 cvs 那裏 check out 的文件夾 e.g. ~/src/fedora/rpms/你的軟件名稱/common/ ,執行 ./cvs-import.sh 你的SRPM檔案名稱 ,將源碼和相關檔案匯入到本地的 cvs 文件夾。 2. [請進入下一部分] 正式編譯 RPM 安裝包 1. 檢查所有檔的正確性。 2. 確定所有相關檔案都經已上傳至 cvs 伺服器(或其他伺服器):(所有來自作者/官方網站的源碼包,最好是自動包裝過程中從來源服務器實時下載;否則由於源碼檔案有可能過大,不適合上傳到 cvs 伺服器影響效率。應該把它們上傳至個別設置的源碼檔案眝存伺服器: make upload FILES=[源碼包檔案名稱] (如要清除伺伺器上舊有的源碼檔碼檔案,第一個上傳的檔案要執行以下命令: make new-sources FILES=[源碼包檔案名稱] ),再把 source 和 .cvsignore 兩個檔案 check in 到 cvs 伺服器上。) 3. 執行 make tag 建立新的 tag 標簽。tag 標簽用於標示所有 RPM 安裝包有關的檔案,附有 checksum 以對照檔案的狀態。如果希望保留發行版本號 (n-v-r 的 r),除第一次建立 tag 標簽,可執行 make force-tag 覆蓋最新建立的 tag 標簽。 4. 如一切順利,執行 make build ,RPM 安裝包將會在中央包裝系統(正在服役的系統名稱: Koji)。 5. 看到文字介面訊息中看到所有工作為 done 後,代表 RPM 和 SRPM 等檔案已經被建立,正在為中央包裝系統所儲存。 6. [請進入下一部分] 遞送到發行版本 ( Rawhide / 開發版本不用進行以下步驟) 1. 開啟並以 Fedora 帳號登入 Bodhi (發行版本遞送系統)。 2. 在左邊頁面按下 New Update ,把空格填上: Package = n-v-r 格式的包版本編號、 Release = 要遞送的發行版本、 Type = 更新種類( bugfix 是補錯, enhancement 是改進, security 是保安)、Request = 要遞送的要求( Testing 是測試 repository ,一般都先到那裏讓有興趣幫忙測試的人下載; Stable 是穏定 repository ,就是公眾使用者都能下載的,一般要先經過 testing 一段短時間沒有問題後才到那裏; None 是還沒準備好遞送的,暫時存檔。)、 Bugs = 和此遞送有關的 bug 。若右邊空格選取,當更新遞送到 Stable ,系統會自動關閉該 bug 、 Notes = 備注、 Suggest Reboot 空格是要求使用者更新後重新啟動電腦。 3. [完成!] 後輟 本文仍有很大的改進空間,歡迎提供任何意見,甚至動手修改完善。謝謝您的閲讀! 最後修改: Kaio 13:23, 7 February 2008 (HKT) 作者原文: http://keimoto.net/wiki/index.php/Fe...95%99%E5%AD%B8 作者 Blog 已遷到: http://blog.dejieshi.com Retrieved from "https://fedoraproject.org/wiki/Zh/Do...95%99%E5%AD%B8" |
RPM Building >