一、rpm介紹
rpm 前是red hat package manager 的縮寫,本意是red hat 軟體包管理,顧名思義是red hat 貢獻出來的軟體包管理;現在應為rpm package manager的縮寫。在fedora、redhat、mandriva、suse、yellowdog等主流發行版本,以及在這些版本基礎上二次開發出來的發行版採用; rpm包中除了包括程式執行時所需要的檔案,也有其它的檔案;乙個rpm包中的應用程式,有時除了自身所帶的附加檔案保證其正常以外,還需要其它特定版本檔案,這就是軟體包的依賴關係。
rpm可以讓使用者直接以binary方式安裝軟體包,並且可替使用者查詢是否已經安裝了有關的庫檔案;在用rpm刪除程式時,它又會聰明地詢問使用者是否要刪除有關的程式。如果使用rpm來公升級軟體,rpm會保留原先的配置檔案,這樣使用者就不用重新配置新的軟體了。rpm保留乙個資料庫,這個資料庫中包含了所有的軟體包的資料,通過這個資料庫,使用者可以進行軟體包的查詢。rpm雖然是為linux而設計的,但是它已經移值到sunos、solaris、aix、irix等其它unix系統上了。rpm遵循gpl版權協議,使用者可以在符合gpl協議的條件下自由使用及傳播rpm。
二、rpm包分類
rpm分為兩大類,
1二進位製類包,包括rpm安裝包(一般分為i386和x86等幾種)和調式資訊包等
2 原始碼類包,原始碼包和開發包應該歸位此類
它們之間的關係是,最先我們按rpm打包要求改造軟體專案原始碼,當符合要求之後就可以使用rpmbuild命令來生成不同的rpm包,同時生成的包之間版本是直接對應的,比如相同的原始碼包將生成完全相同的二進位制rpm包。當你在網上查詢rpm包時,一般你可以在rpms目錄中找到預編譯的二進位製包,而原始碼包則會在srpms目錄內。
我們這裡提到的rpm製作就是指改造軟體源**使之符合rpm打包要求的過程,這也可以等價為rpm原始碼包的製作過程,因為當你有了原始碼包就可以直接編譯得到二進位制安裝包和其他任意包。
三、rpm包製作介紹
rpm包的製作,即是rpm原始碼包的製作。
rpm包工作的原理
rpm是為解決原始碼包不易安裝(需要編譯)和軟體包相互之間依賴(是rpm包管理器可以一定程度解決依賴問題)問題,它通過在探測原始碼包在build和install階段的動作獲得最終生成的需要安裝的系統裡的檔案,並記錄下一些必要的操作(比如安裝完成後執行某項操作),然後把此組成為乙個整體,當在使用者安裝此包時把前面獲得的所有問題和記錄的所有操作原原本本的作用的實際系統上。
把乙個普通的原始碼打成rpm包,需要下面一些操作
1、先需要對專案的makefile作必要的改造以支援rpm打包操作(實際上此操作不是絕對的,spec文件和makefile的是協調統一工作的,只要他們之間配合好了其他都無所謂,我們一般只是推薦大家盡量按行業標準規範操作而已)
2、次是針對當前專案撰寫spec文件,spec文件包括了rpm打包過程的操作內容和新生成的rpm包的基本資訊等,它的作用物件是打包程式rpmbuild。
四、rpm包製作過程
方法1:使用rpmbuild來製作rpm包
方法2:使用fpm來製作rpm包
參考:http://rpm包製作流程
步驟一 安裝rpm build軟體 1.安裝rpm build包 yum y install rpm build 2.生成rpmbuild目錄結構 rpmbuild ba nginx.spec 會報錯,沒有檔案或目錄 可以忽略 會自動生成跟目錄 3.準備工作,將原始碼軟體複製到sources目錄 c...
RPM包的製作
注意事項 製作rpm包最好不要使用root使用者,以防止製作過程中不慎執行有害命令 需要安裝的依賴包 yum install gcc rpm build rpm devel rpmlint make python bash coreutils diffutils patch rpmdevtoolss...
原始碼包製作RPM包
首先安裝工具,rpm build可能在rpmdevtools裡已經包含 yum install rpm build yum install rpmdevtools rpmbuild預設工作路徑的確定,通常由在 usr lib rpm macros這個檔案裡的乙個叫做 topdir的巨集變數來定義。如...