本機環境:centos7,64位
1. 首先安裝工具,rpmbuild可能在rpmdevtools里已經包含
#yum install rpm-devel.x86_64
#yum install rpmdevtools
2. 執行如下rpmdev-setuptree生成rpmbuild的工作目錄(會在當前用戶的根目錄下生成rpmbuild目錄)
#rpmdev-setuptree
3. 查看生成的rpmbuid工作目錄
#cd ~/rpmbuild/
#ls
結果如下圖所示
[ump@localhost rpmbuild]$ ls BUILD RPMS SOURCES SPECS SRPMS
目錄含義解釋如下:
SOURCES #放置打包資源,包括源碼打包文件和補丁文件
SPECS #放置SPEC文檔
BUILD #打包過程中的工作目錄
RPMS #存放生成的二進制包
RPMS/i386 #存放生成的i386結構包
SRPMS #存放生成的源碼包
2 撰寫SPEC文檔
----------------------------------------------------------
#軟件包簡要介紹
Summary: hellorpm is a test program。
#軟件包的名字
Name: hellorpm
#軟件包的主版本號
Version: 2.2.6
#軟件包的次版本號
Release: 1
#源代碼包,默認將在上面提到的SOURCES目錄中尋找
Source0: %{name}-%{version}.tar.gz
#授權協議
License: GPL
#定義臨時構建目錄,這個地址將作為臨時安裝目錄在后面引用
BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root
#軟件分類
Group: Development/Tools
#軟件包的內容介紹
%description
The hellorpm program is a test.
#表示預操作字段,后面的命令將在源碼代碼BUILD前執行
%prep
#構建BUILD環境,將解壓源碼壓縮包到BUILD目錄
%setup -q
#BUILD字段,將通過直接調用源碼目錄中自動構建工具完成源碼編譯操作
%build
#調用源碼目錄中的configure命令
./configure
#在源碼目錄中執行自動構建命令make
make
#安裝字段
%install
#調用源碼中安裝執行腳本
make DESTDIR=$RPM_BUILD_ROOT install
#文件說明字段,聲明多余或者缺少都將可能出錯
%files
#設置文件權限屬性
%defattr(-,root,root)
#聲明/usr/local/bin/hellorpm將出現在軟件包中
/usr/local/bin/hellorpm
#聲明並設置文件屬性
%doc %attr(0444,root,root) /usr/local/man/man1/hellorpm.1
#同上,聲明文檔文件
%doc README
-----------------------------------------------------------------------------------
這個文檔需要說明的一點:
BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root
上面BuildRoot變量表示的是源碼的臨時按照目錄,rpmbuild就是通過次目錄 獲得將要按照到系統中的所有文件,而在SPEC文檔后面make install 命令中的參數DESTDIR=$RPM_BUILD_ROOT即是對該參數的引用,這個參數將傳給Makefile文件一告訴自動構建工具應該安裝文件那 里(實際上我再前文提到過的Makefile需要作一些改造以適應RPM的構建就包括此操作,你的Makefile文件中至少要知道在RPM構建過程中引 用此參數的值去控制安裝操作的目標)。
如上一個簡單的SPEC文檔撰寫完成,下面把一個名為hellorpm-2.2.6.tar.gz的源碼壓縮文件放到
rpmbuild根目錄下的SOURCES目錄下(注,確保此歸檔文件解壓后的目錄為hellorpm-2.2.6,
否則會有問題)。 到此一個完整的rpm打包環境已經構建完成,下面我們就可以開始構建二進制和源代碼RPM包。
3 構建RPM包
構建RPM包是有命令rpmbuild在SPEC的指導下完成。
開始構建操作,首先進入到當前用戶的rpmbuild根目錄(即上面提到的目錄環境)。
#cd ~/rpmbuild/
執行如何命令,-ba表示build all,即生成包括二進制包和源代碼包的所有RPM包,下來如果正常的話,rpmbuild將正常退出,同時在RPMS目錄和SRPMS目錄中將生成對應的RPM包。
#rpmbuild -ba SPECS/hellorpm.spec
這里僅僅介紹了一個最簡單軟件的最簡單的RPM的打包操作過程,諸如帶有共享文件的需要進行復雜配置的具有復雜依賴關系的等等的項目的打包以及后期的維護,包括補丁的制作我將在下來的時間完成補充更新,今天時間不早了,該休息了!
http://www.linuxsir.org/main/?q=node/50 RPM 的介紹和應用(北南兄)
http://www.ibm.com/developerworks/cn/linux/management/package/rpm/part3/ 用 RPM 打包軟件
http://hlee.javaeye.com/blog/343499 RPM包rpmbuild SPEC文件深度說明
