在網上看到了創建RPM包的方法,經過自己的測試後,發現了一些錯誤,先將方法糾正過來。
我用的linux版本是紅帽企業的5.5。這個版本創建的RPM包默認是在/usr/src/RedHat/目錄中,所以在這個目錄測試。RPM包包含兩個文件:一個shell腳本以及一個README文件,README文件描述了如何使用該shell腳本。如果你能創建有兩個文件的軟件包,那麼你也可以創建更大的軟件包。
創建簡單RPM包的過程
1.創建一個目錄結構,把RPM包所需要的文件包含進去。這個結構的名字通常以RPM包的名字命名,包括它的版本號。。我們把這個目錄命名為test-1.0。下面的命令告訴你如何創建並命名這個目錄,已經如何把所需要的文件放在裡面:
$ cd /usr/src/redhat $ mkdir test-1.0 $ cd test-1.0 $ echo echo this is a test > test.sh $ chmod +x test.sh $ echo just launch the script > README
2.現在,RPM包所需要的全部文件都在這裡了。下一步就是創建一個包含RPM文件的.tar.gz文件。這個 目錄還讓創建檔案文件更加簡單。該.tar.gz文件需要位於名為rpmbuild/SOURCES的目錄下。你還需要一個.specs文件,這個文件包含所有建立RPM包的規范說明。該.specs文件是RPM包的核心組件,裡面包括全部文件的 指示,RPM包中的文件按照這些指示進行安裝。該.specs文件應該放置在一個SPECS目錄下。
第一個cd命令確保rpmbuild目錄位於當前用戶的home目錄下。請以普通用戶身份執行以下命令:
$ cd $ mkdir -p rpmbuild/SOURCES $ mkdir -p rpmbuild/SPECS $ tar -cvzf rpmbuild/SOURCES/test-1.0.tar.gz test-1.0
3.現在文件都各就各位,請以普通用戶身份創建一個說明文件。Rpmbuild 命令將會找到所有需要的指示來創建該文件。在最近的Red Hat和衍生版本中,創建說明文件很容易:只需要用vim編輯器創建一個包含所有內容的文件,擴展名設為.spec即可。下面是test-1.0rpm包 中該文件的樣子(模板改變的地方已用粗體標出):
Name:test
Version:1.0
Release:1%{?dist}
Summary:A test package
Group:Test Packages
License:GPL
URL: http://test.example.com
Source0:%{name}-%{version}.tar.gz
BuildRoot:%(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
BuildRequires: /bin/rm, /bin/mkdir, /bin/cp
Requires: /bin/bash, /bin/date
%description
部署單一文件包的演示
%prerp %setup –q %build #configure #make %{? _smp_mflags} %install rm -rf $RPM_BUILD_ROOT #make install DESTDIR=$RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/usr/local/bin cp /usr/src/redhat/test-1.0/test.sh $RPM_BUILD_ROOT/usr/local/bin %clean rm -rf $RPM_BUILD_ROOT %files #%defattr(-root,root,-) #%doc %attr(0755,root,root)/usr/local/bin/test.sh #%changelog #* Today #- Creation of initial RPM
現在.spec文件創建完成,是時候完成最終的工作了。請使用根目錄用戶身份安裝rpmbuild命令。在Red Hat中,請用yum install rpm-build完成這項工作。接下來,請確保所有的文件都呆在正確的地方。Tar存檔文件必須位於創建軟件包的當前用戶帳戶的~/rpmbuild /SOURCES 目錄下,demo.spec文件必須位於~/rpmbuild/SPECS目錄下。現在你可以用rpmbuild -ba test.spec命令來創建軟件包了。這會在/usr/src/redhat/RPMS目錄下創建你的RPM文件。