有時候為了部署自己的包更方便一些,我們會制作自己的RPM包,制作RPM包都有哪些步驟呢,學習這些步驟就是本文的目的。在CentOS下制作RPM包依賴rpm-build這個包,所以需要提前安裝好該軟件包。
RPM生成要素
在RedHat下,rpm包的默認制作路徑在/usr/src/redhat下:
/usr/src/redhat
--BUILD #編譯之前,如解壓包後存放的路徑
--BUILDROOT #編譯後存放的路徑
--RPMS #打包完成後rpm包存放的路徑
--SOURCES #源包所放置的路徑
--SPECS #spec文檔放置的路徑
--SPRMS #源碼rpm包放置的路徑
centos並沒有該目錄,這可咋辦,其實在那個目錄制作rpm是沒有關系的,只要設置好配置文件就行。一般我們都把源碼打包成tar.gz格式然後存放於SOURCES路徑下,而在SPECS路徑下編寫spec文檔,通過命令打包後,默認會把打包後的rpm包放在RPMS下,而源碼包會被放置在SRPMS下。
先看看rpmbuild命令的用法:
1 從spec文檔建立有以下選項:
-bp #只執行spec的%pre 段(解開源碼包並打補丁,即只做准備)
-bc #執行spec的%pre和%build 段(准備並編譯)
-bi #執行spec中%pre,%build與%install(准備,編譯並安裝)
-bl #檢查spec中的%file段(查看文件是否齊全)
-ba #建立源碼與二進制包(常用)
-bb #只建立二進制包(常用)
-bs #只建立源碼包
2 從tarball包建立,與spec類似
-tp #對應-bp
-tc #對應-bc
-ti #對應-bi
-ta #對應-ba
-tb #對應-bb
-ts #對應-bs
3 從源碼包建立
--rebuild #建立二進制包,通-bb
--recompile #同-bi
* rpmbuild的其他參數
--buildroot=DIRECTORY #確定以root目錄建立包
--clean #完成打包後清除BUILD下的文件目錄
--nobuild #不進行%build的階段
--nodeps #不檢查建立包時的關聯文件
--nodirtokens
--rmsource #完成打包後清除SOURCES
--rmspec #完成打包後清除SPEC
--short-cricuit
--target=CPU-VENDOR-OS #確定包的最終使用平台