簡易rpm套件的製作(轉)
簡易rpm套件的製作(轉)[@more@]*雲飛揚,e-mail:yfy001@etang.com,電話:025-4705268-23*/在使用linux的過程中可能可能需要安裝新的軟體,升級已安裝的軟體或刪除已安裝的軟體,這就或多或少要涉及到rpm.Rpm是redhat公司開發的一種原始碼和二進位制程式碼封裝的方式,這種封裝的方式能讓用戶輕鬆的進行軟體包的管理,包括軟體包的安裝、升級、刪除、查詢和管理。由於採用rpm方式安裝軟體包無論是從二進位制和原始碼方面來講,都比用.tar.gz的方式要簡單的多.故用rpm安裝軟體成了一個linux下安裝軟體的標準.對於一個有志於linux下軟體軟體程式設計的程序員來說,掌握簡易的rpm套件的製作對於推廣自己的程式非常有用.Rpm套件的製作大致可分為:1. 取得.tar.gz格式的軟體源程式和補丁檔案.2. 製作rpm套件的spec規格檔案.3. 執行rpm –ba 產生並測試rpm套件.整個包裝rpm套件的重心就在於如何定義完整的rpm套件規格檔案(specification)以及包裝後的測試工作.製作rpm套件之前,必須先了解整個系統檔案的目錄結構與執行,因為某些rpm套件的製作會常常牽扯到系統執行的問題,比如安裝了某種新的shell,就必須在/etc/shells中加入該shell的可執行檔案路徑和名稱,才能正確的使用該shell.為了免除考慮這個顧慮,可以先從無關係統執行的應用軟體做起,等對linux系統相當熟悉了,再嘗試這些涉及到系統運行的rpm套件製作.Rpm的Spec就如同編譯程式時的Makefile,定義製作Rpm包的所有檔案資訊及製作流程,其主要工作將源程式解壓縮,為源程式打補丁,編譯源程式,包裝二進位制碼Rpm包,包裝原始碼Rpm包,清除包裝過程在Build目錄產生的臨時目錄.它山之石,可以攻玉.多看看他人已經編好的spec檔案,是學習spec檔案編寫的捷徑,用以下命令將spec檔案取出.$:rpm –qlp *.src.rpm$:rpm2cpio *.src.rpm|cpio –ivh *.spec首先執行rpm –qlp查詢,得知該套件中有個.spec檔案,再執行rpm2cpio將rpm檔案轉換成cpio檔案格式,並將轉換結果輸出給cpio程式,把source rpm套件中的sepc檔案解壓取出.開啟一個spec檔案,可以發現它可以分為以下幾個段: %define、 %description、%prep、%build、%install、%clean、%files、%changelog。%define段主要用來做一些全域性定義,如:版本號:Version;簡單的概要:Summary;程序的名稱:Name;版權:Copyright;軟體所屬的組:Group;Source名稱是最重要的位置,這裡定義Source的來源(一些tar.gz檔案和一些補丁檔案,若該軟體的Source不僅只有一個檔案,可以指定多重源程式,只需要將"Source"和"Patch"標籤編號,依次指定即可),使用者必須把該檔案放在/usr/src/redhat/SOURCES目錄下,rpm才可以進行包裝工作;icon指名該套件的圖示,前提必須是一個gif檔案,且位於/usr/src/redhat/source目錄下;常常在安裝某些軟體是會出現某些依賴關係資訊,告訴使用者必須先安裝某些套件才能安裝這個rpm套件的情況,需要製作這種功能的rpm套件,就是依賴"Requires"這個標籤, Requires共有=、 >=這五種.若某軟體同時需要用到三四個函式庫,則Requires標籤就必須定義三四行.或用逗號隔開寫成一行.如: Requires: kdesupport.當然, %define段的標籤還有幾個,不過不常用,這裡就不再多說了.%description段較為簡單,主要是對該軟體的一個簡要的介紹.%prep 段是spec的準備段,該段主要執行包裝Rpm包的準備工作,檢查標籤語法是否正確,檢查/usr/src/redhat/SOURCES目錄是否存放源程式及補丁檔案,刪除舊的軟體源程式,並替程式作untar、patch等工作。當然,這些工作可以寫一些shell script來進行指定的工作,但是如果真的寫shell script來進行這些準備工作,可能會令人苦惱。於是rpm開發人員為使用者提供了%setup和%patch這兩個命令來替使用者處理這些繁雜的準備工作。%setup 不加任何選項,僅將軟體包開啟。%setup –n newdir 將軟體包解壓在newdir目錄。%setup -c 解壓縮之前先產生目錄。%setup –b num 將第num個source檔案解壓縮。%setup –T 不使用default的解壓縮操作。%setup –T –b 0 將第0個原始碼檔案解壓縮。%setup –c –n newdir 指定目錄名稱newdir,並在此目錄產生rpm套件。%patch 最簡單的補丁方式,自動指定patch level。%patch 0 使用第0個補丁檔案,相當於%patch –p 0。%patch –s 不顯示打補丁時的資訊。%patch –T 將所有打補丁時產生的輸出檔案刪除。%build 段主要是用來完成程式的編譯,通常情況下是一個make命令用來完成編譯。%install這個段較為複雜,該段主要執行安裝的工作,在這裡你可以寫一些指令碼將程式加入選單欄中,由於各個發行版不同,各個指令碼也不通用,簡單的就是執行make install來完成程式的安裝(視不同程式的安裝而定)。%clean段是spec的刪除段,它是使用rm –f命令刪除編譯時的臨時目錄,一般用rm -rf$RPM_BUILD_ROOT即可。%files、%changelog段分別用來告訴使用者軟體安裝的地方和軟體的一些更新的日誌等。做完這些後,一個spec檔案便就完成了,執行rpm –ba 產生並測試rpm套件,如果沒出什麼錯的話,便就會產生相應的二進位制rpm包和原始碼的srpm包。它們分別位於/usr/src/Redhat/RPMS和/usr/src/Redhat/SRPMS目錄下(注:我使用的是Redhat 7.0,不同的發行版本路徑有差別)./*寫得比較簡單,不明白的地方我們共同交流*
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-939135/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 精通RPM之--製作篇(中)(轉)
- java,製作簡易畫圖板Java
- Dreamweaver製作簡易的拼圖遊戲教程遊戲
- 【練習】製作簡易通訊錄
- html+css 製作簡易導航欄HTMLCSS
- 製作PHP的RPM包例項PHP
- 直播商城原始碼,vue製作簡易的購物車原始碼Vue
- 《RPM原始碼包的製作》RHEL6原始碼
- 如何製作一個 RPM 檔案
- 用kivy學習製作簡易調色畫板appAPP
- 一個簡易停車場地圖製作軟體地圖
- html+css+js製作一個簡易計算器HTMLCSSJS
- video標籤製作簡易版彈幕視訊IDE
- oracle9i簡易客戶端製作說明Oracle客戶端
- 簡易製作貝塞爾曲線動畫(JS+css3+canvas)動畫JSCSSS3Canvas
- 簡單的製作frameworkFramework
- 專業rpm包製作神器multipkg介紹
- QT繪製簡易錶盤QT
- 簡單的網頁製作網頁
- 從零開始實現一個簡易的Java MVC框架(八)–製作StarterJavaMVC框架
- 從零開始實現一個簡易的Java MVC框架(八)--製作StarterJavaMVC框架
- Principle如何製作動效設計?簡單易學的Principle動效設計教程
- 使用CheckInstall從原始碼製作RPM安裝包原始碼
- Linux下製作簡單的仿Windows安裝介面(轉)LinuxWindows
- debian Linux下製作deb包的簡便方法(轉)Linux
- ROM簡單製作教程
- 【帶著canvas去流浪(12)】用Three.js製作簡易的MARVEL片頭動畫(上)CanvasJS動畫
- 【帶著canvas去流浪(13)】用Three.js製作簡易的MARVEL片頭動畫(下)CanvasJS動畫
- DZ外掛製作簡易入門教程(自學手記)第一篇
- 製作簡單的個人網頁教程網頁
- 易6畫 - 線上海報ppt製作平臺
- 使用 VuePress 製作線上簡歷Vue
- 用 Laravel 簡單製作 SitemapLaravel
- html最簡單的Gif圖動畫製作方法gif轉base64HTML動畫
- Emacs簡易操作說明(轉)Mac
- 跟著超哥大神學習擴充套件包的製作- -套件
- Debian安裝包的簡單製作
- Debian的GNOME漢化(美化)簡易教程(轉)