centos 上rpm打包總結


rpm 打包環境--centos 6.5,

第一步:

先看下當前的環境是否有rpmbuild工具。如果沒有,可以在這個網址下載。

http://rpmfind.net/linux/rpm2html/search.php?query=rpm-build

由於rpm包安裝比較簡單,相對與源碼安裝來說不需要編譯等操作,所以在缺少一些工具時,還是推薦使用上面的網址下載相應的rpm包。

安裝時,如果還依賴其他的包,會出現提示,這時候,同樣在上面的網址尋找提示版本號的依賴工具安裝就行。

(如果可以連網的話。可以直接使用yum 命令,這樣依賴的包會自動一起安裝)

第二步:

不同的系統,rpmbuild默認路徑會不同,此時可以使用rpm --showrc 查看rpmbuild 的相關信息,包括一些路徑名等的宏定義。

我是用的centos 系統中,默認是在/root/rpmbuild下。rpmbuild需要用到的BUILD、BUILDROOT、SOURCE、RPMS、SPECS此時已經創建好了

有的帖子上說,這幾個路徑需要手動創建,可能不同版本不太一樣。

第三步:

rpmbuild工具裝好之后,首先需要對其有一個基本的了解。

例如,rpmbuild 的目標就是將源碼包打包成rpm包,安裝時就減少了編譯的步驟。

但是這里有兩個問題大部分帖子上說的都比較模糊。下面是我自己的一些心得整理

1、首先要明確的是,打包和安裝一般來說不會是在一個機器上(要驗證自己的腳本是否正確,最好用兩台機器驗證)。

所以可以這么理解,現在有兩台機器,一個是源碼包的來源機器,一個是rpm包的安裝目標機器。

2、源碼包的來源機也是你自己的實驗機,你的代碼,編譯工具,相關安裝包都在該機器上。而目標安裝機器上可能什么也沒有

3、此時你需要做的就是在源碼機上實現一個腳本(實際上是spec腳本中的某幾個部分實現),對你的代碼進行預處理、編譯、打包等。

4、然后將編譯打包后的rpm包上傳到目標機器上。再在目標機器上實現另一個腳本(spec腳本的另外幾個部分實現),完成解壓,安裝等處理。

先搞清楚上面的幾點,可能對rpm包的制作方法就有個一個大概的了解。

第四步:

開始寫腳本啦.

rpm的腳本是spec腳本。網上有很多關於spec腳本的說明,大家可以參照這篇:http://blog.csdn.net/hbhhww/article/details/7219834

里面介紹了spec腳本的關鍵字和一些標准宏定義。這里截取比較重要的部分簡單說明一下。

%pre rpm安裝前執行的腳本

%post rpm安裝后執行的腳本

%preun rpm卸載前執行的腳本

%postun rpm卸載后執行的腳本
 
%preun %postun 的區別是什么呢?
前者在升級的時候會執行,后者在升級rpm包的時候不會執行

%files 定義那些文件或目錄會放入rpm中

%exclude 列出不想打包到rpm中的文件


注意:如果%files或者%exclude指定的文件不存在,會出錯的。

 

 第五步:

可以先將需要打包的文件壓縮到固定目錄

完成spec腳本之后開始打包

使用 rpmbuild -xx xxx.spec 就可以制作rpm包啦.具體可以參考:http://blog.sina.com.cn/s/blog_4ba5b45e0102e5r2.html

下面同樣只截取部分說明:

#rpmbuild
-bp 只作准備 (解壓與打補丁)
-bc 准備並編譯
-bi 編譯並安裝
-bl 檢驗文件是否齊全
-ba 編譯后做成*.rpm和src.rpm
-bb 編譯后做成*.rpm
-bs 只做成*.src.rpm 

制作好的.rpm包,就可以使用rpm命令在其他機器上安裝啦~

 


免責聲明!

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



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