有時候為了部署自己的包更方便一些,我們會製作自己的RPM包,製作RPM包都有哪些步驟呢,學習這些步驟就是本文的目的。在CentOS下製作RPM包依賴rpm-build這個包,所以需要提前安裝好該軟體包。
RPM產生要素
- 產生rpm所用的檔案清單或者原始碼
- 根據檔案清單或者原始碼產生rpm規範,也就是spec檔案
- 根據spec檔案加工源碼/檔案的工具rpmbuild
在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 #確定包的最終使用平台
製作自己的rpm包
Linux 下rpm安裝後的目錄結構和一些配置
rpm與yum的綜合性介紹與樣本示範
Redhat Linux---rpm 命令詳解