一 RPM介紹
RPM 前是Red Hat Package Manager 的縮寫,本意是Red Hat 軟件包管理,顧名思義是Red Hat 貢獻出來的軟件包管理;現在應爲RPM Package Manager的縮寫。在Fedora、Redhat、Mandriva、SuSE、YellowDog等主流發行版本,以及在這些版本基礎上二次開發出來的發行版採用; RPM包中除了包括程序運行時所需要的文件,也有其它的文件;一個RPM 包中的應用程序,有時除了自身所帶的附加文件保證其正常以外,還需要其它特定版本文件,這就是軟件包的依賴關係。
二 RPM包分類
1 二進制類包,包括rpm安裝包(一般分爲i386和x86等幾種)和調式信息包等。
2 源碼類包,源碼包和開發包應該歸位此類。
三 RPM包製作介紹
四 RPM包製作過程
1 準備打包環境
#yum install rpmbuild
~/rpmbuild
~/rpmbuild/SOURCES
~/rpmbuild/SPECS
~/rpmbuild/BUILD
~/rpmbuild/RPMS
~/rpmbuild/RPMS/i386
~/rpmbuild/SRPMS
如果你的用戶目錄主目錄下沒有類似目錄結構,你可以通過一個工具軟件來自動配置和生成,如下。
#yum install rpmdevtools
下了運行自動配置命令自動生成如上目錄,並配置一些必要操作。
#rpmdev-setuptree
rpmdev-setuptree命令默認將再當前用戶主目錄下創建一個RPM構建根目錄結構,
如果需要改變次默認位置,可以修改配置文件:~/.rpmmacros中變量_topdir對應
的值即可。
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的打包操作過程,諸如帶有共享文件的需要進行復雜配置的具有複雜依賴關係的等等的項目的打包以及後期的維護,包括補丁的製作我將在下來的時間完成補充更新,今天時間不早了,該休息了!