【原創】Linux創建RPM包思路


A:RPM是什么?

RPM(Red Hat Package Manager)是用於 Linux 分發版(distribution)的最常見的軟件包管理器。

RPM包命名方式:name-version-release.architecture.rpm

如:hadoop-1.0.3-1.el6.x86_64.rpm,hadoop-1.0.3-2.el6.noarch.rpm

 

B:RPM能做什么?

  RPM有五種基本的操作功能:安裝、卸載、升級、查詢和驗證。這五種基本功能的實現僅僅需要用rpm + 選項 + rpm包就能輕易地實現。這五個功能常用的方式如下(以mysql為例):

安裝:

         rpm –ivh mysql-5.1.61-4.el6.i686.rpm

查詢:

         rpm –qa mysql:查詢跟mysql有關的包。

刪除:

         rpm –e mysql-5.1.61-4.el6.i686,一般的話都會先通過查詢已經安裝好的包,然后執行刪除命令,上述命令,即可卸載掉系統安裝好的rpm包。

升級:

         rpm –Uvh mysql-5.1.61-4.el6.i686.rpm

驗證:

         rpm –V mysql-5.1.61-4.el6.i686.rpm。對已經安裝了的程序進行驗證。

C:怎么創建RPM包?

         首先要定義一個構建rpm包的目錄,如mkdir –p /root/rpmbuild,但是,僅僅這樣是不能指定rpmbuild即rpm包的目錄,因為系統有默認的rpm構建的目錄,這時需要在rpmbuild目錄底下建一個.rpmmacros文件,用來指定rpm構建的目錄位置,然后再在rpmbuild底下創建以下四個目錄:BUILD,RPMS,SOURCES,SPECS,如下圖所示。

 

下面按照創建RPM包的步驟,邊講解邊對各個目錄的作用進行敘述。假設,我們要創建的rpm包為:test-1.0.1-1.el6.i686.rpm,打包的壓縮文件為:test-1.0.1.tar.gz。

  1. vim .rpmmacros鍵入如下內容:%_topdir /rpm/rpmbuild,這是為了制定rpm構建的目錄位置。
  2. 把test-1.0.1.tar.gz拷貝到SOURCE目錄底下。
  3. 轉至SPECS目錄底下,編寫test.spec描述文件,這個文件是創建rpm包最重要的部分,它會制定rpm包里的軟件的安裝目錄,以及安裝軟件前后要注意的問題,軟件的依賴及系統要求,后面會詳細介紹。
  4. 編譯RPM,執行命令:rpmbuild –ba test.spec。這樣以后,就開始創建rpm包如果成功的話,繼續往下看。
  5. 執行rpmbuild –ba test.spec,會首先把test-1.0.1.tar.gz解壓縮到BUILD目錄,系統會自動建立BUILDROOT這個目錄(如上圖所示),這個目錄用來存放執行時存放的臨時文件夾,這個目錄也很重要,需要把在此目錄建立相關目錄以及拷貝相關文件信息的腳本寫入test.spec文件里,以防編譯出錯,無法生成RPM包。成功執行完成之后,會在RPMS這個目錄生成i686/ test-1.0.1-1.el6.i686.rpm文件。以下圖片描述這個過程以及附了SPEC文件。如下圖:

 

 網上有很多關於SPEC文件語法的描述,但都不全,下一篇文章,我主要把SPEC文件比較全一點的不太難理解的語法羅列下,敬請期待。

推薦中文的rpm包講解得比較全的文章(IBM工程師寫的,有好幾部分),有興趣的博友可以看看:http://www.ibm.com/developerworks/cn/linux/management/package/rpm/part1/

【備注】:尊重原創者的勞動成果,分享和轉載請注明出處。謝謝。2012.12.12 草原戰狼

分享到:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM