1、安装rpm-build

  1. # yum install rpm-build

2、创建制作RPM包目录

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

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

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

4、编写SPEC文件

  1. Name: nginx # 名称
  2. Version: 1.8. # 版本
  3. Release: %{?dist} # 版本号
  4. Summary: High performance web server # 简介
  5.  
  6. Group: Applications/Server # 组名,可通过less /usr/share/doc/rpm-4.8./GROUPS 查看
  7. License: GPLv2 # 许可
  8. URL: http://www.51.com
  9. Source0: %{name}-%{version}.tar.gz # 用到的source
  10. Source1: init.nginx
  11. Source2: nginx.conf
  12. Source3: test.conf
  13. Source4: fcgi.conf
  14. Source5: index.php
  15.  
  16. BuildRequires: gcc,make
  17. Requires: pcre,pcre-devel,openssl-devel,chkconfig
  18. BuildRoot: %_topdir/BUILDROOT # make install的测试安装目录
  19.  
  20. %description
  21. It's a nginx compile by hexm@51.com.
  22.  
  23. %prep # 准备阶段,解压源码并cd进去
  24. %setup -q
  25.  
  26. %build # 编译
  27. ./configure \
  28. --prefix=%{_prefix} \
  29. --user=nooby \
  30. --group=nobody \
  31. --with-pcre \
  32. --with-http_gzip_static_module \
  33. --with-http_stub_status_module \
  34. --with-http_ssl_module
  35. make %{?_smp_mflags}
  36.  
  37. %install # 安装
  38. [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
  39. make DESTDIR=$RPM_BUILD_ROOT install
  40. %{__install} -p -D -m %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/nginx
  41. %{__install} -p -D %{SOURCE2} $RPM_BUILD_ROOT/%{_prefix}/conf/nginx.conf
  42. mkdir $RPM_BUILD_ROOT/%{_prefix}/conf/vhosts &> /dev/null
  43. %{__install} -p -D %{SOURCE3} $RPM_BUILD_ROOT/%{_prefix}/conf/vhosts/test.conf
  44. %{__install} -p -D %{SOURCE4} $RPM_BUILD_ROOT/%{_prefix}/conf/fcgi.conf
  45. %{__install} -p -D -m %{SOURCE5} $RPM_BUILD_ROOT/opt/wwwroot/www..com/www/index.php
  46.  
  47. %pre # 安装前执行脚本
  48.  
  49. %post # 安装后执行脚本
  50. ln -sv /usr/local/app/nginx-1.8. /usr/local/nginx &> /dev/null
  51. chkconfig --add nginx && chkconfig nginx on
  52. [ ! -d /data/logs/nginx ] && mkdir -pv /data/logs/nginx &> /dev/null
  53.  
  54. %preun # 卸载前执行的脚本
  55.  
  56. %postun # 卸载后执行的脚本
  57. rm -rf /usr/local/nginx
  58. rm -rf /usr/local/app/nginx-1.8.
  59.  
  60. %clean
  61. #[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
  62.  
  63. %files # 哪些文件放入rpm包
  64. %defattr (-,root,root,)
  65. %{_prefix}
  66. %attr(,root,root) /etc/rc.d/init.d/%{name}
  67. %doc /opt/wwwroot/www..com/www/index.php
  68. %attr(,nobody,nobody) /opt/wwwroot
  69.  
  70. %changelog

5 使用rpmbuild制作rpm包

  1. rpmbuild
  2. -ba 既生成src.rpm又生成二进制rpm
  3. -bs 只生成srcrpm
  4. -bb 只生二进制的rpm
  5. -bp 执行到pre
  6. -bc 执行到 build
  7. -bi 执行install
  8. -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. fastjson 混淆注意事项

    使用fastjson 注意事项,主要表现: 1.加了符号Annotation 的实体类,一使用就会奔溃 2.当有泛型属性时,一使用就奔溃 在调试的时候不会报错,当你要打包签名混淆包的时候,就会出现上述 ...

  2. Linux系统sar命令解析

    安装 如果系统没有该命令请安装: apt-get install sysstat yum install sysstat 安装完毕: vi /etc/default/sysstat ENABLED=& ...

  3. response和request的区别以及常见问题解决

    request是请求,即客服端发来的请求 response是响应,是服务器做出的响应 --------------------------------------------------------- ...

  4. [AlwaysOn Availability Groups]AlwaysOn Ring Buffers

    AlwaysOn Ring Buffers 一些AlwaysOn的诊断信息可以从SQL Server ring buffers.或者从sys.dm_os_ring_buffers.ring buffe ...

  5. mysql小技巧

    将一列值赋予另一列 会遇到新增一列, 需要用其他列的值来初始化这一列 或者根据业务条件把某行的某列值直接赋予到其他列. 行号 列1 列2 1 aaa ddd 2 bbb ccc UPDATE 表 SE ...

  6. 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  7. TypeScript 2.0候选版(RC)已出,哪些新特性值得我们关注?

    注:本文提及到的代码示例下载地址 - Runnable sample to introduce Typescript 2.0 RC new features 作为一个Javascript的超集, Ty ...

  8. 基于modelsim-SE的专业进阶仿真流程

    基于modelsim-SE的专业进阶仿真流程 通过<基于modelsim-SE的简单仿真流程>和<调用altera IP核的仿真流程>是否感受到仿真流程中的繁琐步骤,特别是在m ...

  9. python入门

    输出用print 注释用# rang() >>> range(1,5) #代表从1到5(不包含5) [1, 2, 3, 4] >>> range(1,5,2) #代 ...

  10. Mysql字符串字段判断是否包含某个字符串的3种方法

    方法一: SELECT * FROM users WHERE emails like "%b@email.com%"; 方法二: 利用MySQL 字符串函数 find_in_set ...