一、简介
rpmbuild命令用于创建软件的二进制包和源代码包。
二、选项
参考:http://blog.sina.com.cn/s/blog_4ba5b45e0102e5r2.html http://www.jinbuguo.com/redhat/rpmbuild.html
三、实例
1 准备打包环境
执行如下命令安装rpmbuild和rpmdevtools
#yum install rpmbuild
#yum install rpmdevtools
执行如下命令来生成rpmbuild的工作目录
#rpmdev-setuptree
工作目录结构如下,
~/rpmbuild ~/rpmbuild/SOURCES #放置打包资源,包括源码打包文件和补丁文件等 ~/rpmbuild/SPECS #放置SPEC文档 ~/rpmbuild/BUILD #打包过程中的工作目录 ~/rpmbuild/RPMS #存放生成的二进制包 ~/rpmbuild/RPMS/i386 #存放生成的i386结构包 ~/rpmbuild/SRPMS #存放生成的源码包
提示:rpmdev-setuptree命令默认将再当前用户主目录下创建一个RPM构建根目录结构,如果需要改变次默认位置,可以修改配置文件:~/.rpmmacros中变量_topdir对应的值即可。
2、载源码包到SOURCES目录,不需要解压
cd SOURCES/ wget http://nginx.org/download/nginx-1.2.1.tar.gz
3、撰写Spec文件
SPEC撰写是打包RPM的核心,也算是最难的一步,好在我们可以从参照一个简单的模板文件开始,在可以实现基本功能的基础上再一步一步的扩充文档内容,直至完全达到要求。下面是一个简单的SPEC文档,其中包括了一些说明信息(注:#后面的内容为说明信息),该SPEC文档是对一个测试的软件项目hellorpm写的,hellorpm软件包编译后仅有一个执行文件、一个手册文件和一个项目说文件。
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 <[email protected]> #软件包的内容介绍 %description nginx [engine x] is a HTTP and reverse proxy server, as well as a mail proxy server #表示预操作字段,后面的命令将在源码代码BUILD前执行 %prep rm -rf $RPM_BUILD_DIR/nginx-1.2.1 zcat $RPM_SOURCE_DIR/nginx-1.2.1.tar.gz | tar -xvf - #BUILD字段,将通过直接调用源码目录中自动构建工具完成源码编译操作 %build cd nginx-1.2.1 #调用源码目录中的configure命令 ./configure --prefix=/usr/local/nginx #在源码目录中执行自动构建命令make 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将出现在软件包中
/usr/local/nginx
4、构建RPM包
开始构建操作,首先进入到当前用户的rpmbuild根目录
#cd ~/rpmbuild/ #rpmbuild -ba SPECS/nginx.spec
提示:-ba表示build all,即生成包括二进制包和源代码包的所有RPM包,如果正常的话,rpmbuild将正常退出,同时在RPMS目录和SRPMS目录中将生成对应的RPM包。
参考:http://blog.sina.com.cn/s/blog_5d867af101019b7i.html http://hlee.iteye.com/blog/343499
https://www.centos.bz/2012/06/make-rpm-package-methods/
时间: 2024-10-17 17:43:41