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腳本的關鍵字和一些標准宏定義。這里截取比較重要的部分簡單說明一下。
%post rpm安裝后執行的腳本
%preun rpm卸載前執行的腳本
%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命令在其他機器上安裝啦~