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. android 自定义控件——(二)圆形按钮,圆形View

    ----------------------------------↓↓圆形按钮,圆形View(源代码下有属性解释)↓↓---------------------------------------- ...

  2. iOS中的一些细节

    1. 在使用单例模式时一般使用allocWithZone 因为alloc最终还是会调用allocWithZone进行分配空间 2. synchronized 线程锁(互斥锁) 优点:能防止多线程抢夺资 ...

  3. 关于Apache Spark

    Apache Spark :  https://www.oschina.net/p/spark-project

  4. mysql操作入门基础之对数据库和表的增删改查

    一.数据库管理-- 1.登陆数据库 mysql -u root -p; -- 2.查看数据库服务器所有数据库 SHOW DATABASES; -- 3.创建数据库 CREATE DATABASE My ...

  5. CSS3:text-overflow实现文字截取,超出部分显示省略号

    1. 概述 使用text-overflow:ellipsis对溢出文本显示省略号有两个好处, 一是不用通过后端程序截取: 二是有利于SEO. 2. text-overflow的属性 clip: 当对象 ...

  6. Windows Server 2012 虚拟化实战:SCVMM的安装和部署

    本篇大概介绍一下在Windows Server 2012 R2上安装和部署SCVMM的过程及其注意事项.下图是我们数据中心SCVMM的基本架构,其中 SCVMM Database 是用于存储了所有配置 ...

  7. APUE学习之出错处理

         当UNIX函数发生错误时,通常会返回一个负值,而且整形变量errno通常被设置为具有特定信息的值.        errno是全局变量,仅当函数出错才有被改变.对待errno,应注意两条规则 ...

  8. HTML5全屏(Fullscreen)API详细介绍

    // 整个页面 onclick=   launchFullScreen(document.documentElement); // 某个元素 launchFullScreen(document.get ...

  9. Unity 重要基础知识点

    这是两个月前的学习记录,发出来了下,如果有误欢迎大家指出: 脚本生命周期 //每当脚本被加载时调用一次 // 1.   在Awake中做一些初始化操作 void Awake(){ //初始化publi ...

  10. Windows操作系统下远程连接MySQL数据库

    用Eclipse做一个后台项目,但是数据库不想放在本地电脑,于是买了一个腾讯云服务器(学生有优惠,挺便宜的),装上MySQL数据库,但是测试连接的时候,发现总是连接不是上,但是本地数据库可以连接,于是 ...