Linux rpmbuild命令
一、简介
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 <admin@www.centos.bz> #软件包的内容介绍
%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/
Linux rpmbuild命令的更多相关文章
- linux 常用命令大全
linux 常用命令大全 系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统 ...
- Linux 常用命令使用方法大搜刮
Linux 常用命令使用方法大搜刮 1.# 表示权限用户(如:root),$ 表示普通用户 开机提示:Login:输入用户名 password:输入口令 用户是系统注册用户成功登陆后,可以进入 ...
- Linux常用命令大全(非常全!!!)
Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短 ...
- 【转载】Linux常用命令
Linux常用命令大全(非常全!!!) 转载出处:https://www.cnblogs.com/yjd_hycf_space/p/7730690.html 系统信息 arch 显示机器的处理器架构( ...
- Linux常用命令大全(转)
(转)Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因, ...
- 18-10-09 Linux常用命令大全(非常全!!!)
Linux常用命令大全(非常全!!!) Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制, ...
- [转] Linux常用命令大全(非常全!!!)
出处:https://www.cnblogs.com/yjd_hycf_space/p/7730690.html Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错.我觉得 ...
- Linux常规命令总结
Linux常规命令总结,仅供参考: 系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显 ...
- 类型:linux;问题:linux命令;结果:Linux常用命令大全
Linux常用命令大全 QQ空间新浪微博腾讯微博人人网豆瓣网百度空间百度搜藏开心网复制更多1997 系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) una ...
随机推荐
- Java Collection或Map的同步
新集合也提供了能防止多个进程同时修改一个容器内容的机制.若在一个容器里反复,同时另一些进程介入,并在那个容器中插入.删除或修改一个对象,便会面临发生冲突的危险.我们可能已传递了那个对象,可能它位于我们 ...
- <记录学习>京东页面最后一天HTML以及css遇到的问题
遇到的问题及新的知识 1.< >表示< >号2.rgba(0,0,0,透明度) opacity:0~1:3.<a href="javascript:voi ...
- Linux更改主机名--适用于Centos
1.显示主机名: [root@bogon:~]# hostnamezhh64 2.临时修改主机名: [root@bogon:~]# hostname zzofs[root@bogon:~]# host ...
- 1 UML基础
学习设计模式的过程中,发现相关的作者们都会用UML类图来表示一个模式的整体脉络,这种方式确实直观明了,既能体现宏观思路.又能兼顾实现细节.真的是很妙的工具.在开始正式学习设计模式之前,有必要对UML有 ...
- Dynamics.js - 创建逼真的物理动画的 JS 库
Dynamics.js 是一个用来创建物理动画 JavaScript 库.你只需要把dynamics.js引入你的页面,然后就可以激活任何 DOM 元素的 CSS 属性动画,也可以用户 SVG 属性. ...
- 【精心推荐】几款极好的 JavaScript 文件上传插件
文件上传功能作为网页重要的组成部分,几乎无处不在,从简单的单个文件上传到复杂的批量上传.拖放上传,需要开发者花费大量的时间和精力去处理,以期实现好用的上传功能.这篇文章向大家推荐几款很棒的 JavaS ...
- 【特别推荐】10款唯美浪漫的婚礼 & 结婚纪念网站模板
互联网的重要性不言而喻,如今我们的生活已经完全离不开网络.这里给大家分享一组唯美浪漫的结婚邀请网站以及婚礼请柬网站模板,如果你也正想制作这样的网站,相信这些漂亮的网站模板能够带给你很大的帮助,让你快速 ...
- Horseman - 让你更轻松的使用 PhantomJS
Horseman 是一个 Node.js 模块,让你可以更轻松的使用 PhantomJS 进行功能测试,页面自动机,网络监控,屏幕捕获等.它提供了直接,链式的 API,易于理解的控制流,避免回调陷阱. ...
- Moqui简介
Moqui简介 Moqui是一个生态系统理念,是需要一系列的能够用于构建企业自动化办公的开源软件的组合,如:eCommerce, ERP, CRM, SCM, MRP, EAM, POS, 等等. 架 ...
- iOS 开发之路(登陆页键盘遮挡输入框问题)一
在学习开发登陆页的时候,遇到的问题分享如下: 首先是swift 3.0 中,NotificationCenter 设置 selector 如下: @IBOutlet weak var bottomCo ...