RPM是RedHat Package Manager(RedHat軟件包管理工具)的縮寫,是一種用于互聯(lián)網(wǎng)下載包的打包及安裝工具,它包含在某些Linux分發(fā)版中矛渴。它生成具有.RPM擴(kuò)展名的文件件余。使用rpm安裝軟件和管理軟件非常的方便累榜。而這節(jié)我們不是介紹如何使用rpm安裝或管理軟件蜓耻,而是如何把源碼制作成rpm包存哲。
下面我們以制作nginx的rpm開始介紹其制作方法。以下操作在centos-7進(jìn)行翩剪。
制作nginx的rpm例子
建立目錄結(jié)構(gòu)
/usr/src/redhat/SOURCES — 存放源代碼乳怎,補(bǔ)丁,圖標(biāo)等文件肢专。
/usr/src/redhat/SPECS — 存放用于管理rpm制作進(jìn)程的spec文件舞肆。
/usr/src/redhat/BUILD — 解壓后的文件存放在這里焦辅。
/usr/src/redhat/RPMS — 存放由rpmbuild制作好的二進(jìn)制包博杖。
/usr/src/redhat/SRPMS —存放由rpmbuild制作好的源碼包。
mkdir -p /usr/src/redhat
cd /usr/src/redhat
mkdir SOURCES SPECS BUILD RPMS SRPMS
下載源碼包到SOURCES目錄筷登,不需要解壓剃根。
cd /usr/src/redhat/SOURCES
wget http://nginx.org/download/nginx-1.11.1.tar.gz
創(chuàng)建Spec文件
cd /usr/src/redhat/SPECS
vi nginx.spec
內(nèi)容如下:
#
# Example spec file for nginx
#
Summary: high performance web server
Name: nginx
Version: 1.11.1
Release: 1.el7.ngx
License: 2-clause BSD-like license
Group: Applications/Server
Source: http://nginx.org/download/nginx-1.11.1.tar.gz
URL: http://nginx.org/
Distribution: Linux
Packager: geekwolf <admin@simlinuxc.om>;
%description
nginx [engine x] is a HTTP and reverse proxy server, as well as
a mail proxy server
%prep
rm -rf $RPM_BUILD_DIR/nginx-1.11.1
zcat $RPM_SOURCE_DIR/nginx-1.11.1.tar.gz | tar -xvf -
%build
cd nginx-1.11.1
./configure --prefix=/usr/local/nginx
make
%install
cd nginx-1.11.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
在制作RPM包之前需要安裝必要的工具,如rpmbuild,gcc等前方。開始RPM制作
yum install gcc rpm-build pcre-devel
cd /usr/src/redhat/SPECS/
rpmbuild -bb nginx.spec
一切順利的話狈醉,會(huì)生成nginx的rpm包,/usr/src/redhat/RPMS/i386/nginx-1.11.1-1.el7.ngx.x86_64.rpm惠险。
測試rpm包
rpm -ivh /usr/src/redhat/RPMS/i386/nginx-1.11.1-1.el7.ngx.x86_64.rpm
spec文件解釋
從以上的簡單例子可以看出苗傅,制作rpm包最重要的還是spec文件,下面解釋一下例子所用到的指令班巩。
#:以#開頭是注釋渣慕,rpm會(huì)忽略它。
Summary:簡單描述軟件。
Name :定義rpm的名稱逊桦。
Version: 定義軟件版本
Release: 發(fā)行版本
License: 定義許可證
Group: 軟件分類
Source: 源碼下載地址
URL: 源碼相關(guān)網(wǎng)站
Distribution: 發(fā)行版系列
Packager: 打包人的信息
%description:軟件詳細(xì)描述眨猎,可多行
%prep :軟件編譯之前的處理,如解壓强经。
%build :開始編譯軟件睡陪,如make
%install :開始安裝軟件,如make install
%files :指定哪些文件需要被打包匿情,如/usr/local/nginx
%preun :定義卸載之前的動(dòng)作兰迫,如殺掉進(jìn)程。
這里只介紹了幾個(gè)常用的tag炬称,更詳細(xì)的請參考:http://www.rpm.org/max-rpm/ch-rpm-inside.html