简单制作RPM二进包实例[转]

此方法是通过编写spec文件,使用rpmbuild来完成一个rpm的打包。

以nginx为例进行介绍

制作平台:centos 5.x X86_64

四步走:

第一步:建立目录结构

mkdir /usr/src/RedHat/{SOURCES,SPECS,BUILD,RPMS,SRPMS} -p

相关目录介绍:

  1. /usr/src/redhat/SOURCES    #存放源代码、补丁等文件 
  2. /usr/src/redhat/SPECS      #存放用于管理rpm制作进程的spec文件 
  3. /usr/src/redhat/BUILD      #解压后的文件存放目录 
  4. /usr/src/redhat/RPMS       #存放由rpmbuild制作好的二进制包 
  5. /usr/src/redhat/SRPMS      #存放由rpmbuild制作好的源码包 
第二步:把源码包放在SOURCES目录下
cd /usr/src/redhat/SOURCES
wget http://nginx.org/download/nginx-1.2.0.tar.gz
 
第三步:生成nginx.spec文件
 
  1. cd /usr/src/redhat/SPECS 
  2. cat nginx.spec 
  3. # 
  4. # spec file for nginx 
  5. # Build 2012-07-17 
  6. # By opsren 
  7. # 
  8. Summary: High performance web server 
  9. Name: Nginx 
  10. Version: 1.2
  11. Release: 0.el5.ngx 
  12. License: 2-clause BSD-like license 
  13. Group: Applications/Server 
  14. Source: http://nginx.org/download/nginx-1.2.0.tar.gz 
  15. URL: http://nginx.org 
  16. Distribution: Centos/Redhat 
  17. Packager: qiuzhijun <250621008@qq.com> 
  18.   
  19. %description 
  20. Nginx ("engine x") is a high performance HTTP and reverse proxy server, as well as a mail(IMAP/POP3/SMTP) proxy server. 
  21. %prep 
  22. tar zxf $RPM_SOURCE_DIR/nginx-1.2.0.tar.gz 
  23. %build 
  24. cd nginx-1.2.0 
  25. ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre --lock-path=/var/run/nginx.lock --pid-path=/var/run/nginx.pid 
  26. make 
  27. %install 
  28. cd nginx-1.2.0 
  29. make install 
  30. %preun 
  31. if [ -z "`ps aux | grep nginx | grep -v grep`" ];then 
  32. pkill nginx >/dev/null 
  33. exit 0 
  34. fi 
  35. %files 
  36. /usr/local/webserver/nginx 
 
第四步:RPM包制作
首先系统要安装好必备的制作工具:gcc、rpmbuild等
  1. yum -y install gcc rpm-build pcre-devel 
  2. cd /usr/src/redhat/SPECS/ 
  3. rpmbuild -bb nginx.spec 
通过上面这条命令,会在/usr/src/redhat/RPMS/x86_64/下面生成nginx-1.2.0-1.el5.ngx.x86_64.rpm这个文件
 
-bb 这个选项就是制作二进制包(build binary package only from <specfile>)
 
对spec文件内容进行简单说明:
spec文件是制作rpm包的核心!
  1. 以#开头的是注释信息; 
  2. Summary:对相关软件进行简单描述说明 
  3. Name:定义rpm包的名称 
  4. Version:定义软件的版本号 
  5. Release:发行版本 
  6. License:定义许可证 
  7. Group:说明软件属于哪种应用类型 
  8. Source:软件源码下载地址 
  9. URL:软件相关官方站点 
  10. Distribution: 发行版系列 
  11. Packager: 制作人的简单信息 
  12.   
  13. %description:软件详细描述信息 
  14. %prep:软件编译之前的处理 
  15. %build:编译软件 
  16. %install:安装软件 
  17. %preun:定义卸载之前的动作 
  18. %files:指定要打包的软件包,这里是/usr/local/webserver/nginx 
 
对于更详细的说明请参考官方资料:http://www.rpm.org/max-rpm/ch-rpm-inside.html
 
下面是apache的spec文件实例:
  1. # 
  2. # spec file for apache 
  3. # Build 2012-07-17 
  4. # By opsren 
  5. # 
  6. Summary: High stability web server 
  7. Name: Apache 
  8. Version: 2.2
  9. Release: 22.el5
  10. License: 2-clause BSD-like license 
  11. Group: Applications/Server 
  12. Source: http://apache.etoak.com/httpd/httpd-2.2.22.tar.gz 
  13. URL: http://apache.org 
  14. Distribution: Centos/Redhat 
  15. Packager: qiuzhijun <250621008@qq.com> 
  16.   
  17. %description 
  18. Apache is a first web server 
  19. %prep 
  20. tar zxf $RPM_SOURCE_DIR/httpd-2.2.22.tar.gz 
  21. %build 
  22. cd httpd-2.2.22 
  23. ./configure --prefix=/usr/local/webserver/apache --enable-so --enable-deflate --enable-headers --enable-mods-shared=all --enable-rewrite 
  24. make 
  25. %install 
  26. cd httpd-2.2.22 
  27. make install 
  28. %preun 
  29. if [ -z "`ps aux | grep httpd | grep -v grep`" ];then 
  30. pkill httpd >/dev/null 
  31. exit 0 
  32. fi 
  33. %files 
  34. /usr/local/webserver/apache 
 以后对于相同或类似平台可以到其它服务器上进行rpm安装部署。
 
另外还有一种rpm打包的方法:rpm_create
这是一种新的打rpm的工具,不用spec语言,只需要会简单的shell命令,即可完成打包操作,非常方便,结合了spec语言和checkinstall,相比spec方法要简单很多!
 
官方站点:http://code.google.com/p/rpmcreate/
下载站点:wget http://rpmcreate.googlecode.com/files/rpm_create-1.7.5-9.x86_64.rpm
大家可以去官方站点参考!
posted @ 2013-01-17 22:07  SA高处不胜寒  阅读(220)  评论(0编辑  收藏  举报