1、准备工作:
# yum -y install rpmdevtools rpm-build gcc gcc-c++ zlib-devel pcre pcre-devel
(rpm-build可以使用rpmbuild命令;
rpmdevtools:rpmdev-setuptree 在当前用户的家目录下生成rpmbuild文件
:rpmdev-newspec 可以生成 .spec文件模板)
2、执行 rpmdev-setuptree命令,生成 rpmbuild 文件,此文件内包含5个文件夹:
BUILD — 存放解压后的文件
SOURCES — 存放源代码,补丁,图标等文件
RPMS — 存放由rpmbuild制作好的二进制包
SPECS — 存放用于管理rpm制作进程的spec文件
SRPMS —存放由rpmbuild制作好的源码包
3、将需要转换的tar.gz文件放入 SOURCES 目录内,不需解压;
(本次实验为 nginx-1.2.1.tar.gz)
4、在 SPECS 目录下,创建 SPEC 文件:
# rpmdev-newspec nginx.spec
5、修改 nginx.spec 文件内容,此为成败的关键:
# vi nginx.spec
Name: nginx
Version: 1.2.1
Release: 1%{?dist}
Summary: Design by liyupei
Group: Applications/Internet
License: GPL
URL: www.nginx.org
Source0: nginx-1.2.1.tar.gz
%description
Design by liyupei
%prep
cd $RPM_BUILD_DIR
tar xzvf ../SOURCES/nginx-1.2.1.tar.gz
%build
cd $RPM_BUILD_DIR/nginx-1.2.1
./configure
make
%install
cd $RPM_BUILD_DIR/nginx-1.2.1
make install
cp -rf /usr/local/nginx /root/rpmbuild/BUILDROOT/nginx-1.2.1-1.el6.x86_64/
%files
/nginx/
%clean
rm -rf /root/rpmbuild/BUILDROOT
6、生成 rpm 文件:
# rpmbuild -ba nginx.spec
若是不出意外的话会在 RPMS 文件夹下有个rpm文件,转换成功!
7、拓展:spec文件内容解释:
#:以#开头是注释,rpm会忽略它
Summary:简单描述软件
Name :定义rpm的名称
Version: 定义软件版本
Release: 发行版本
License: 定义许可证,一般是GPL
Group: 软件分类
Source: 源码下载地址
URL: 源码相关网站
Distribution: 发行版系列
Packager: 打包人的信息
%description:软件详细描述,可多行
%prep :软件编译之前的处理,如解压
%build :开始编译软件,如make
%install :开始安装软件,如make install
%files :指定哪些文件需要被打包,如/usr/local/nginx
%clean:清理由前面的步骤生成的垃圾文件
%preun :定义卸载之前的动作,如杀掉进程
参考网站:https://www.centos.bz/2012/06/make-rpm-package-methods/
http://blog.csdn.net/Lin_litao/article/details/24006469