1、安装rpm-build

# yum install rpm-build

2、创建制作RPM包目录

# cat /root/.rpmmacros
%_topdir /root/rpmbuild
%_prefix /usr/local/app/%{name}-%{version}
# cd /root/rpmbuild
# mkdir -pv {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} 目录意义:
  BUILD 源码解压后存放目录
  RPMS  制作完成后RPM包存放目录
  SOURCES  收集的源码或配置文件,补丁存放位置
  SPECS  spec文件存放目录
  SRPMS  存放SRMPS生成目录

3、将源码拷贝到/root/rpmbuild/SOURCES目录下

# ls SOURCES/
fcgi.conf index.php init.nginx nginx-1.8..tar.gz nginx.conf test.conf

4、编写SPEC文件

Name:            nginx    # 名称
Version: 1.8. # 版本
Release: %{?dist} # 版本号
Summary: High performance web server # 简介 Group: Applications/Server # 组名,可通过less /usr/share/doc/rpm-4.8./GROUPS 查看
License: GPLv2 # 许可
URL: http://www.51.com
Source0: %{name}-%{version}.tar.gz # 用到的source
Source1: init.nginx
Source2: nginx.conf
Source3: test.conf
Source4: fcgi.conf
Source5: index.php BuildRequires: gcc,make
Requires: pcre,pcre-devel,openssl-devel,chkconfig
BuildRoot: %_topdir/BUILDROOT # make install的测试安装目录 %description
It's a nginx compile by hexm@51.com. %prep # 准备阶段,解压源码并cd进去
%setup -q %build # 编译
./configure \
--prefix=%{_prefix} \
--user=nooby \
--group=nobody \
--with-pcre \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_ssl_module
make %{?_smp_mflags} %install # 安装
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
make DESTDIR=$RPM_BUILD_ROOT install
%{__install} -p -D -m %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/nginx
%{__install} -p -D %{SOURCE2} $RPM_BUILD_ROOT/%{_prefix}/conf/nginx.conf
mkdir $RPM_BUILD_ROOT/%{_prefix}/conf/vhosts &> /dev/null
%{__install} -p -D %{SOURCE3} $RPM_BUILD_ROOT/%{_prefix}/conf/vhosts/test.conf
%{__install} -p -D %{SOURCE4} $RPM_BUILD_ROOT/%{_prefix}/conf/fcgi.conf
%{__install} -p -D -m %{SOURCE5} $RPM_BUILD_ROOT/opt/wwwroot/www..com/www/index.php %pre # 安装前执行脚本 %post # 安装后执行脚本
ln -sv /usr/local/app/nginx-1.8. /usr/local/nginx &> /dev/null
chkconfig --add nginx && chkconfig nginx on
[ ! -d /data/logs/nginx ] && mkdir -pv /data/logs/nginx &> /dev/null %preun # 卸载前执行的脚本 %postun # 卸载后执行的脚本
rm -rf /usr/local/nginx
rm -rf /usr/local/app/nginx-1.8. %clean
#[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT %files # 哪些文件放入rpm包
%defattr (-,root,root,)
%{_prefix}
%attr(,root,root) /etc/rc.d/init.d/%{name}
%doc /opt/wwwroot/www..com/www/index.php
%attr(,nobody,nobody) /opt/wwwroot %changelog

5 使用rpmbuild制作rpm包

rpmbuild
-ba 既生成src.rpm又生成二进制rpm
-bs 只生成src的rpm
-bb 只生二进制的rpm
-bp 执行到pre
-bc 执行到 build段
-bi 执行install段
-bl 检测有文件没包含

可以先使用bp参数,再bc参数,再bi参数,最后再ba参数

nginx-1.8.0 rpm包制作的更多相关文章

  1. php-7.1.0 rpm包制作

    nginx-1.8.0 rpm包制作见上篇文章:http://www.cnblogs.com/xiaoming279/p/6251149.html spec文件 Name: php Version: ...

  2. 制作nginx和php的rpm包

    rpm包的制作真几把烦,制作php的rpm花了我3天时间,因为是根据线上环境来做的,依赖的第三方库太多,本来想把所有的第三方库做进php包,后来发现在rpmbuild -bb的时候非常耗时,而且乱七八 ...

  3. rpm包制作(待实验)

    作者:firefoxbug 时间:July 18, 2014 rpm包命名规范 对于rpm包的命名符合如下规范. %{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm N ...

  4. RPM包制作方法

    一.RPM介绍 RPM 前是Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理:现在应为RPM Package M ...

  5. rpm包制作介绍

    RPM(Rpm Package Management)在ReadHat等发行版下被用作软件包管理程序,其将某个软件相关的文件置入一个.rpm包中,用rpm命令,我们可以方便地完成Linux下软件安装. ...

  6. RPM包制作教程

    一.RPM介绍 RPM 前是Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理:现在应为RPM Package M ...

  7. nginx的RPM包制作案例

    使用nginx-1.12.2版本的源码软件,生成对应的RPM包软件,具体如下: - 软件名称为nginx - 软件版本为1.12.2 - RPM软件包可以查询描述信息 - RPM软件包可以安装及卸载 ...

  8. 实战RPM包制作

    在开发中经常会用到一些rpm包,但是一直没有自己手动制作过.今天在制作的时候意外地还解决了自己以前一直困惑的问题,就是怎么制作rpm debuginfo包,类似CentOS官网那样的debuginfo ...

  9. 简单介绍RPM包制作方法

    RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中.它生成具有.RPM扩展名的文件.使用r ...

随机推荐

  1. Fragment的生命周期

    Fragment的生命周期: 1. onAttach():Fragment对象跟Activity关联时 2. onCreate():Fragment对象的初始创建时 3. onCreateView() ...

  2. HDFS的架构

    主从结构 主节点,只有一个: namenode 从节点,有很多个: datanodes 在版本1中,主节点只有一个,在 版本2中主节点有两个. namenode 负责(管理): 接收用户操作请求 维护 ...

  3. Java实现上传下载

    一.上传 二.下载 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.Fi ...

  4. Eclipse使用Maven创建web3.0项目

    安装Maven插件 这一步不细说了,自己下载的Eclipse-JAVA EE 版已自带 Maven插件 开始创建 文本1New一个 Maven Web App项目:File-->New--> ...

  5. 树莓派3B远程VNC的设置(包括开机启动)

    可以说,现在很少有自带VNCserver的教程 因为之前 官方系统没有自带VNC  但是 现在  最新版的官方系统已经自带VNCserver 只需要在设置里启用一下,然后设置就可以用啦. 别的教程都是 ...

  6. 安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制

    安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制 socket 连接采用流的方式进行发送接收数据,采用thread线程的方式. 什么是线程?  详细代码介 ...

  7. 用 JSP 实现对文件的相关操作

    前段时间一直忙着作业,实验,动手的时间真是少之又少,今天终于可以继续和大家分享关于 JSP 的学习心得. 简单总结一下吧: JSP 理论性很强,感觉就是纯语法. 我更偏向于实际编写代码,这样更容易理解 ...

  8. python爬虫学习(7) —— 爬取你的AC代码

    上一篇文章中,我们介绍了python爬虫利器--requests,并且拿HDU做了小测试. 这篇文章,我们来爬取一下自己AC的代码. 1 确定ac代码对应的页面 如下图所示,我们一般情况可以通过该顺序 ...

  9. 谈c++ pb_ds库(二) 红黑树大法好

    厉害了,没想到翻翻pb_ds库看到这么多好东西,封装好的.现成的splay.红黑树.avl... 即使不能在考场上使用也可以用来对拍哦 声明/头文件 #include <ext/pb_ds/tr ...

  10. CODE[VS]4633Mz树链剖分练习

    Description 给定一棵结点数为n的树,初始点权均为0,有依次q个操作,每次操作有三个参数a,b,c,当a=1时,表示给b号结点到c号结点路径上的所有点(包括b,c,下同)权值都增加1,当a= ...