Linux rpmbuild命令


一、簡介

rpmbuild命令用於創建軟件的二進制包和源代碼包。

 

二、選項 

 

三、實例

1 准備打包環境

執行如下命令安裝rpmbuild和rpmdevtools

#yum install rpmbuild
#yum install rpmdevtools 

執行如下命令來生成rpmbuild的工作目錄

#rpmdev-setuptree

工作目錄結構如下,

~/rpmbuild
~/rpmbuild/SOURCES              #放置打包資源,包括源碼打包文件和補丁文件等
~/rpmbuild/SPECS                #放置SPEC文檔
~/rpmbuild/BUILD                #打包過程中的工作目錄
~/rpmbuild/RPMS                 #存放生成的二進制包
~/rpmbuild/RPMS/i386            #存放生成的i386結構包
~/rpmbuild/SRPMS                #存放生成的源碼包
提示:rpmdev-setuptree命令默認將再當前用戶主目錄下創建一個RPM構建根目錄結構,如果需要改變次默認位置,可以修改配置文件:~/.rpmmacros中變量_topdir對應的值即可。

image_thumb

 

2、載源碼包到SOURCES目錄,不需要解壓

cd SOURCES/
wget http://nginx.org/download/nginx-1.2.1.tar.gz

image5_thumb

 

3、撰寫Spec文件

SPEC撰寫是打包RPM的核心,也算是最難的一步,好在我們可以從參照一個簡單的模板文件開始,在可以實現基本功能的基礎上再一步一步的擴充文檔內容,直至完全達到要求。下面是一個簡單的SPEC文檔,其中包括了一些說明信息(注:#后面的內容為說明信息),該SPEC文檔是對一個測試的軟件項目hellorpm寫的,hellorpm軟件包編譯后僅有一個執行文件、一個手冊文件和一個項目說文件。

nginx.spec文檔的內容如下:

#
# Example spec file for nginx
#
#軟件包簡要介紹
Summary: high performance web server

#軟件包的名字
Name: nginx

#軟件包的主版本號
Version: 1.2.1

#軟件包的次版本號
Release: 1.el5.ngx

#授權協議
License: 2-clause BSD-like license

#軟件分類
Group: Applications/Server
Source: http://nginx.org/download/nginx-1.2.1.tar.gz
URL: http://nginx.org/
Distribution: Linux
Packager: zhumaohai <admin@www.centos.bz>
 
#軟件包的內容介紹
%description
nginx [engine x] is a HTTP and reverse proxy server, as well as
a mail proxy server

#表示預操作字段,后面的命令將在源碼代碼BUILD前執行
%prep
rm -rf $RPM_BUILD_DIR/nginx-1.2.1
zcat $RPM_SOURCE_DIR/nginx-1.2.1.tar.gz | tar -xvf -

#BUILD字段,將通過直接調用源碼目錄中自動構建工具完成源碼編譯操作  
%build
cd nginx-1.2.1

#調用源碼目錄中的configure命令 
./configure --prefix=/usr/local/nginx

#在源碼目錄中執行自動構建命令make
make

#安裝字段
%install
cd nginx-1.2.1

#調用源碼中安裝執行腳本  
make install
%preun
if [ -z "`ps aux | grep nginx | grep -v grep`" ];then
killall nginx >/dev/null
exit 0
fi

#文件說明字段,聲明多余或者缺少都將可能出錯
%files
#聲明/usr/local/nginx將出現在軟件包中
/usr/local/nginx

 

4、構建RPM包

開始構建操作,首先進入到當前用戶的rpmbuild根目錄

#cd ~/rpmbuild/
#rpmbuild -ba SPECS/nginx.spec

提示:-ba表示build all,即生成包括二進制包和源代碼包的所有RPM包,如果正常的話,rpmbuild將正常退出,同時在RPMS目錄和SRPMS目錄中將生成對應的RPM包。

image_thumb1

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM