您的位置:首页 > 产品设计 > 产品经理

制作 RPM软件包

2012-08-21 15:58 330 查看
RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。使用rpm安装软件和管理软件非常的方便。而这节我们不是介绍如何使用rpm安装或管理软件,而是如何把源码制作成rpm包。

下面我们以制作nginx的rpm开始介绍其制作方法。以下操作在centos-5 32系统进行。

制作nginx的rpm例子

1、建立目录结构

/usr/src/redhat/SOURCES — 存放源代码,补丁,图标等文件。

/usr/src/redhat/SPECS — 存放用于管理rpm制作进程的spec文件。

/usr/src/redhat/BUILD — 解压后的文件存放在这里。

/usr/src/redhat/RPMS — 存放由rpmbuild制作好的二进制包。

/usr/src/redhat/SRPMS —存放由rpmbuild制作好的源码包。

mkdir -p /usr/src/redhat
cd /usr/src/redhat
mkdir SOURCES SPECS BUILD RPMS SRPMS

2、下载源码包

下载源码包到SOURCES目录,不需要解压。

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

3、创建Spec文件

cd /usr/src/redhat/SPECS
vi 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
%prep
rm -rf $RPM_BUILD_DIR/nginx-1.2.1
zcat $RPM_SOURCE_DIR/nginx-1.2.1.tar.gz | tar -xvf -
%build
cd nginx-1.2.1
./configure --prefix=/usr/local/nginx
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

4、开始RPM制作

在制作RPM包之前需要安装必要的工具,如rpmbuild,gcc等。

yum install gcc rpm-build pcre-devel

cd /usr/src/redhat/SPECS/
rpmbuild -bb nginx.spec

一切顺利的话,会生成nginx的rpm包,/usr/src/redhat/RPMS/i386/nginx-1.2.1-1.el5.ngx.i386.rpm。

5、测试rpm包

rpm -ivh /usr/src/redhat/RPMS/i386/nginx-1.2.1-1.el5.ngx.i386.rpm

spec文件解释

从以上的简单例子可以看出,制作rpm包最重要的还是spec文件,下面解释一下例子所用到的指令。

#:以#开头是注释,rpm会忽略它。

Summary:简单描述软件。

Name :定义rpm的名称。

Version: 定义软件版本

Release: 发行版本

License: 定义许可证

Group: 软件分类

Source: 源码下载地址

URL: 源码相关网站

Distribution: 发行版系列

Packager: 打包人的信息

%description:软件详细描述,可多行

%prep :软件编译之前的处理,如解压。

%build :开始编译软件,如make

%install :开始安装软件,如make install

%files :指定哪些文件需要被打包,如/usr/local/nginx

%preun :定义卸载之前的动作,如杀掉进程。

这里只介绍了几个常用的tag,更详细的请参考:http://www.rpm.org/max-rpm/ch-rpm-inside.html

转载请注明《文章来源:http://www.centos.bz/2012/06/make-rpm-package-methods/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: