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 

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注