一、RPM介紹
RPM 前是Red Hat Package Manager 的縮寫,本意是Red Hat 軟件包管理,顧名思義是Red Hat 貢獻(xiàn)出來的軟件包管理;現(xiàn)在應(yīng)為RPM Package Manager的縮寫。在Fedora、Redhat、Mandriva、SuSE、YellowDog等主流發(fā)行版本,以及在這些版本基礎(chǔ)上二次開發(fā)出來的發(fā)行版采用; RPM包中除了包括程序運(yùn)行時(shí)所需要的文件,也有其它的文件;一個(gè)RPM包中的應(yīng)用程序,有時(shí)除了自身所帶的附加文件保證其正常以外,還需要其它特定版本文件,這就是軟件包的依賴關(guān)系。
RPM可以讓用戶直接以binary方式安裝軟件包,并且可替用戶查詢是否已經(jīng)安裝了有關(guān)的庫文件;在用RPM刪除程序時(shí),它又會(huì)聰明地詢問用戶是否要?jiǎng)h除有關(guān)的程序。如果使用RPM來升級(jí)軟件,RPM會(huì)保留原先的配置文件,這樣用戶就不用重新配置新的軟件了。RPM保留一個(gè)數(shù)據(jù)庫,這個(gè)數(shù)據(jù)庫中包含了所有的軟件包的資料,通過這個(gè)數(shù)據(jù)庫,用戶可以進(jìn)行軟件包的查詢。RPM雖然是為linux而設(shè)計(jì)的,但是它已經(jīng)移值到SunOS、Solaris、AIX、Irix等其它UNIX系統(tǒng)上了。RPM遵循GPL版權(quán)協(xié)議,用戶可以在符合GPL協(xié)議的條件下自由使用及傳播RPM。
二、RPM包分類
rpm分為兩大類,
1 二進(jìn)制類包,包括rpm安裝包(一般分為i386和x86等幾種)和調(diào)式信息包等2 源碼類包,源碼包和開發(fā)包應(yīng)該歸位此類
它們之間的關(guān)系是,最先我們按rpm打包要求改造軟件項(xiàng)目源碼,當(dāng)符合要求之后就可以使用rpmbuild命令來生成不同的rpm包,同時(shí)生成的包之間版本是直接對(duì)應(yīng)的,比如相同的源碼包將生成完全相同的二進(jìn)制rpm包。當(dāng)你在網(wǎng)上查找rpm包時(shí),一般你可以在RPMS目錄中找到預(yù)編譯的二進(jìn)制包,而源碼包則會(huì)在SRPMS目錄內(nèi)。
我們這里提到的RPM制作就是指改造軟件源代碼使之符合RPM打包要求的過程,這也可以等價(jià)為RPM源碼包的制作過程,因?yàn)楫?dāng)你有了源碼包就可以直接編譯得到二進(jìn)制安裝包和其他任意包。
三、RPM包制作介紹
RPM包的制作,即是RPM源碼包的制作。
RPM包工作的原理
RPM是為解決源碼包不易安裝(需要編譯)和軟件包相互之間依賴(是RPM包管理器可以一定程度解決依賴問題)問題,它通過在探測源碼包在build和install階段的動(dòng)作獲得最終生成的需要安裝的系統(tǒng)里的文件,并記錄下一些必要的操作(比如安裝完成后執(zhí)行某項(xiàng)操作),然后把此組成為一個(gè)整體,當(dāng)在用戶安裝此包時(shí)把前面獲得的所有問題和記錄的所有操作原原本本的作用的實(shí)際系統(tǒng)上。
把一個(gè)普通的源碼打成RPM包,需要下面一些操作
1、先需要對(duì)項(xiàng)目的Makefile作必要的改造以支持RPM打包操作(實(shí)際上此操作不是絕對(duì)的,SPEC文檔和Makefile的是協(xié)調(diào)統(tǒng)一工作的,只要他們之間配合好了其他都無所謂,我們一般只是推薦大家盡量按行業(yè)標(biāo)準(zhǔn)規(guī)范操作而已)2、次是針對(duì)當(dāng)前項(xiàng)目撰寫SPEC文檔,SPEC文檔包括了RPM打包過程的操作內(nèi)容和新生成的RPM包的基本信息等,它的作用對(duì)象是打包程序rpmbuild。
四、RPM包制作過程
方法1:使用rpmbuild來制作rpm包
參考:http://www.CUOXin.com/274914765QQ/p/4737803.html
方法2:使用fpm來制作rpm包
參考:http://www.tuicool.com/articles/Nj6nau
新聞熱點(diǎn)
疑難解答
圖片精選