RPM打包與SPEC文件

製作RPM軟件包並不是一件複雜的工作,其中的關鍵在於編寫SPEC軟件包描述文件。要想製作一個rpm軟件包就必須寫一個軟件包描述文件(SPEC)。 這個文件中包含了軟件包的諸多信息,如軟件包的名字、版本、類別、說明摘要、創建時要執行什麼指令、安裝時要執行什麼操作、以及軟件包所要包含的文件列表 等等。

 

pam_ldap.spec描述文件說明如下:

文件規範

1.文件頭

Summary: PAM module for LDAP.                                          #用一句話概括該軟件包儘量多的信息。
Name: pam_ldap                                                                   #軟件包的名字,最終RPM軟件包是用該名字與版本號,釋出號及體系號來命名軟件包的。
Version: 185                                                                          #軟件版本號。僅當軟件包比以前有較大改變時才增加版本號。
Release: 1                                                                             #軟件包釋出號。一般我們對該軟件包做了一些小的補丁的時候就應該把釋出號加1。
Source0: ftp://ftp.padl.com/pub/%{name}-%{version}.tar.gz  #源程序軟件包的名字。如 stardict-2.0.tar.gz。
Source1: ldap.conf
URL: http://www.padl.com/                                                     #軟件的主頁
Copyright: LGPL                                                                   #軟件包所採用的版權規則。具體有:GPL(自由軟件),BSD,MIT,Public Domain(公共域),Distributable(貢獻),commercial(商業),Share(共享)等,一般的開發都寫GPL。
Group: System Environment/Base                                        #軟件包所屬類別 系統環境/基礎
BuildRoot: %{_tmppath}/%{name}-root                                 #這個是安裝或編譯時使用的“虛擬目錄”,後面可使用$RPM_BUILD_ROOT 方式引用
BuildPrereq: openldap-devel                                                #
Requires: openldap cyrus-sasl openssl                                #該rpm包所依賴的軟件包名稱,可以用>=或<=表示大於或小於某一特定版本
Obsoletes: pam_ldap

 

%description                                                                          #軟件包詳細說明,可寫在多個行上。 %開頭的是rpm定義的宏命令

This package includes a LDAP access clients: pam_ldap.   

 

Pam_ldap is a module for Linux-PAM that supports password changes, V2/V3

clients, Netscapes SSL/OpenSSL, ypldapd, Netscape Directory Server password

policies, access authorization, crypted hashes, etc.

 

Install nss_ldap if you need LDAP access clients.

 這個包包括一個ldap訪問客戶端: PAM_LDAP

 

pam_ldap是一個linux PAM模塊,支持修改密碼,V2/V3客戶端,Netscapes SSL/OpenSSL, ypldapd, NetScape目錄服務密碼策略,訪問權限,加密hash等

如果需要LDAP訪問客戶端,請安裝nss_ldap

 

2.%prep段

這個段是預處理段,通常用來執行一些解開源程序包的命令,爲下一步的編譯安裝作準備。

%prep

%setup -q -a 0

setup命令用於啓動名稱服務與功能。系統配置工具

3.build段

本段是建立段,所要執行的命令爲生成軟件包服務,如make 命令。

./configure

make

4.%install段

本段是安裝段,其中的命令在安裝軟件包時將執行,如make install命令。

[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/{etc,lib64/security}

install -m 755 pam_ldap.so \
               $RPM_BUILD_ROOT/lib64/security/

install -m 644 %{SOURCE1} $RPM_BUILD_ROOT/etc/ldap.conf

chmod 755 $RPM_BUILD_ROOT/lib64/security/*.so*

 

 

Install和cp類似,都可以將文件/目錄拷貝到指定的地點。但是,install允許你控制目標文件的屬性。install通常用於程序的makefile,使用它來將程序拷貝到目標(安裝)目錄。

本段做的工作是將二進制文件和配置文件(pam_ldap.so, ldap.conf),拷貝到相應的目錄,並賦予相應的權限屬性

5. %files段

本段是文件段,用於定義軟件包所包含的文件,分爲三類–說明文檔(doc),配置文件(config)及執行程序,還可定義文件存取權限,擁有者及組別。

%defattr(-,root,root)

%attr(0755,root,root) /lib64/security/*.so*

%attr(0644,root,root) %config(noreplace) /etc/ldap.conf

%doc AUTHORS NEWS COPYING COPYING.LIB README ChangeLog pam.d

 

6.%changelog段

本段是修改日誌段。你可以將軟件的每次修改記錄到這裏,保存到發佈的軟件包中,以便查詢之用。每一個修改日誌都有這樣一種格式:第一行是:* 星期 月 日 年 修改人 電子信箱。其中:星期、月份均用英文形式的前3個字母,用中文會報錯。接下來的行寫的是修改了什麼地方,可寫多行。一般以減號開始,便於後續的查閱。

* Mon Jan 08 2001 Joe Little <jlittle@open-it.org>
- first PAM_LDAP specific RPM, stolen from the previously maintained nss_ldap

* Thu Jan 04 2001 Joe Little <jlittle@open-it.org>
- changed Makefile.RPM.openldap2 to a patch instead of a source file
- updated to pam_ldap 86 and nss_ldap 126

之後的省略

打包

如果想發佈rpm格式的源碼包或者是二進制包,就要使用rpmbuild工具(rpm最新打包工具)。如果我們已經根據本地源碼包的成功編譯安裝而寫了 spec文件(該文件要以.spec結束),那我們就可以建立一個打包環境,也就是目錄樹的建立,一般是在/usr/src/redhat/目錄下建立5 個目錄。它們分別是BUILD、SOURCE、SPEC、SRPM、RPM。

SOURCE用來存放打包是 要用到的源文件和patch

BUILD目錄用來存放打包過程中的源文件

SPEC用來存放spec文件,

SRPM、RPM分別存放打包生成的rpm格式的源文件和二進制文件。

 

當然我們可以根據需要 來選用不同的參數打包文件,筆者總結如下3條。

 

準備文件

/root/rpmbuild/SOURCES/ 

    ldap.conf

    pam_ldap-185.tar.gz

/root/rpmbuild/SPECS/

    pam_ldap.spec

1.只生成二進制格式的rpm包

cd /root/rpmbuild/SPECS/

rpmbuild -bb pam_ldap.spec

獲得:

/root/rpmbuild/RPMS/x86_64/pam_ldap-185-1.x86_64.rpm

2.只生成src格式的rpm包

cd /root/rpmbuild/SPECS/

rpmbuild -bs pam_ldap.spec

獲得:

/root/rpmbuild/SRPMS/pam_ldap-185-1.src.rpm

3.只需要生成完整的源文件

cd /root/rpmbuild/SPECS/

rpmbuild -bp pam_ldap.spec

獲得:

/root/rpmbuild/BUILD/pam_ldap-185/

4.完全打包

cd /root/rpmbuild/SPECS/

rpmbuild -ba pam_ldap.spec

獲得:

以上三個同時獲得

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章