%define _prefix /usr/local/nginx    //预定义的prefix目录
%define _logpath /var/log/weblog    //预定义日志目录
Name: nginx
Version: 1.12.1
Release: 1%{?dist}
Summary: The Nginx HTTP and reverse proxy server
Group: Applications/System
License: GPLv2
URL: https://nginx.org
Packager: Atlantis <XXX@XXX.com>
Vendor: XXX-XXX
Source0: %{name}-%{version}.tar.gz  //引用的源码文件
Source1: nginx.conf                 //引用配置文件
Source2: nginx                      //引用System-V风格的Service服务
Source3: nginx.logrotate            //引用日志轮转的配置文件
BuildRoot: %_topdir/BUILDROOT       //虚拟根目录
Requires: libxslt-devel,openssl-devel,pcre-devel    //所依赖的软件包%description
NGINX is the heart of the modern web, powering half of the world’s busiest sites and applications. The company's comprehensive application delivery platform combines load balancing, content caching, web serving, security controls, and monitoring in one easy-to-use software package.%prep                               //编译前准备工作,这里指定的就是Setup,有条件也可以指定编译器
%setup -q%build                              //编译参数,这个看到这里的人基本都懂,没啥讲的,最后一个参数可以使用并行编译: make -j 6
./configure \--user=nginx \--group=nginx \--prefix=%{_prefix} \--http-log-path=%{_logpath}/access.log \--error-log-path=%{_logpath}/error.log \--pid-path=/var/run/nginx.pid \--with-http_dav_module \--with-http_flv_module \--with-http_realip_module \--with-http_addition_module \--with-http_xslt_module \--with-http_sub_module \--with-http_random_index_module \--with-http_degradation_module \--with-http_secure_link_module \--with-http_gzip_static_module \--with-http_ssl_module \--with-http_stub_status_module \--with-pcre \--with-threads \--with-stream \--with-ld-opt=-Wl,-E
make %{?_smp_mflags}%install                            //安装步骤
rm -rf %{buildroot}                 //保证虚拟根的干净
make install DESTDIR=%{buildroot}   //install 到虚拟根
%{__install} -p -d -m 0755 %{buildroot}%{_logpath}  //定义一个日志目录并赋予其权限,这个文件会在编译时自动生成,因此要声明
%{__install} -p -D -m 0644 %{SOURCE1} %{buildroot}%{_prefix}/conf/nginx.conf //复制SOURCE1中的文件到虚拟根中
%{__install} -p -D -m 0755 %{SOURCE2} %{buildroot}/etc/rc.d/init.d/nginx //复制SOURCE2中的文件到虚拟根中
%{__install} -p -D -m 0644 %{SOURCE3} %{buildroot}%{_prefix}/conf/nginx.logrotate //复制SOURCE3中的文件到虚拟根中%pre                                //安装前准备操作
if [ $1 == 1 ]; then                // 这里的1为安装;0为卸载/usr/sbin/useradd -r nginx -s /sbin/nologin 2> /dev/null
fi%post                               //安装后准备操作
if [ $1 == 1 ]; thenecho "export PATH=/usr/local/nginx/sbin:$PATH" >> /etc/profilesource /etc/profilecp %{_prefix}/conf/nginx.logrotate /etc/logrotate.d/nginx
fi%preun                              //卸载前准备操作
if [ $1 == 0 ]; then/etc/init.d/nginx stop 2>&1 /dev/null/usr/sbin/userdel -r nginx 2> /dev/null
fi%postun
if [ $1 == 0 ]; then                //卸载后准备操作rm -f /etc/logrotate.d/nginx
fi%clean
rm -rf %{buildroot}%files                              //定义rpm包安装时创建的相关目录及文件。在该选项中%defattr (-,root,root)一定要注意。它是指定安装文件的属性,分别是(mode,owner,group),-表示默认值,对文本文件是0644,可执行文件是0755。
%defattr(-,root,root,0755)
%{_prefix}
%dir /var/log/weblog
%attr(644,root,root) %{_prefix}/conf/nginx.conf
%attr(755,root,root) /etc/rc.d/init.d/nginx%changelog
* Fri Feb 22 2019 <XXX@XXX> - 1.12.1-3
- Initial Version
- Update Installtion
- Add Logrotate Feature
- Fix Uninstall Bug With logrotate

SPEC文件参数查阅相关推荐

  1. linux安装spec编译器,RPM包制作之Spec文件参数详解

    看这篇文章的人基本都有一个想法,就是:"劳资不想用YUM的安装!不是版本太低就是文件分布太野路子",此时我们需要自己订制软件包的需求,我们会把一些源码包按照我们的需求来做成rpm包 ...

  2. RPM打包与SPEC文件

    制作RPM软件包并不是一件复杂的工作,其中的关键在于编写SPEC软件包描述文件.要想制作一个rpm软件包就必须写一个软件包描述文件(SPEC). 这个文件中包含了软件包的诸多信息,如软件包的名字.版本 ...

  3. RPM包制作之Spec文件详解

    看这篇文章的人基本都有一个想法,就是:"劳资不想用YUM的安装!不是版本太低就是文件分布太野路子",此时我们需要自己订制软件包的需求,我们会把一些源码包按照我们的需求来做成rpm包 ...

  4. linux rqm包制作 spec文件详解

    看这篇文章的人基本都有一个想法,就是:"不想用YUM的安装!不是版本太低就是文件分布太野路子",此时我们需要自己订制软件包的需求,我们会把一些源码包按照我们的需求来做成rpm包,其 ...

  5. linux spec 脚本,RPM包制作之Spec文件详解

    看这篇文章的人基本都有一个想法,就是:"劳资不想用YUM的安装!不是版本太低就是文件分布太野路子",此时我们需要自己订制软件包的需求,我们会把一些源码包按照我们的需求来做成rpm包 ...

  6. rpmbuild SPEC文件的语法

    1.The RPM system assumes five RPM directories BUILD:rpmbuild编译软件的目录 RPMS:rpmbuild创建的binary RPM所存放的目录 ...

  7. RPM包rpmbuild SPEC文件深度说明

    关键字 spec脚本包括很多关键字,主要有: 引用 Name: 软件包的名称,后面可使用%{name}的方式引用 Summary: 软件包的内容概要 Version: 软件的实际版本号,例如:1.0. ...

  8. RPM打包过程及spec文件解释

    随着Linux风靡全球,越来越多的开发者喜欢采用RPM格式来发布自己的软件包,大多数的公司文件服务器会要求项目的资材作成rpm包.那么RPM软件包是怎样制作的呢? 这篇文章就带大家了解一下RPM包作成 ...

  9. linux文档内容的查阅,文件内容查阅 - 一步一步学 Linux - UDN开源文档

    文件内容查阅 cat:由第一行开始显示文件内容 tac:由最后一行开始显示文件内容 nl:显示的时候,顺便输出行号 more:一页一页的显示文件内容 less:与 more 类似,但是它可以往前翻页 ...

最新文章

  1. 【AngularJS】—— 12 独立作用域
  2. win7+php5.3.10下安装memcache (转)
  3. 守望者的逃离—贪心算法
  4. YOLOv5自定义数据集训练
  5. C++ wstring 与 string 之间的相互转换.
  6. 【周记:距gdoi43天】
  7. (10)SPI发送verilog与Systemverilog编码
  8. 【牛客网】NC31 第一个只出现一次的字符
  9. python:os模块与sys模块
  10. ubuntu上编译fortran_Ubuntu下安装Intel Fortran编译器(ifort)
  11. 电容触摸屏测试软件,大规模生产中如何测量触摸屏电容值
  12. 利用CCS6.1 对MSP432 做factory reset
  13. 浏览器不能上网解决办法
  14. 如何使用Excel提取每组中最大最小值
  15. 【转载】一个清华差生9年的北京实录
  16. 【DA9739】基于射频DAC9739的任意波形产生的性能研究
  17. HTML Label标签使用
  18. 操作系统实验(八):文件管理
  19. tar命令(linux解压缩命令)
  20. Linux设置网络缓冲区大小(TCP/UDP)

热门文章

  1. 不用变量调用 同一个累加函数 -- struct A a 与 struct A *a 区别
  2. 写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。
  3. 【方法】数据增强(Data Augmentation)
  4. 基于OpenCASCADE的CAD软件
  5. 3月第4周小红书达人影响力榜单,助力红书数据分析
  6. 联合国“海洋十年”计划招募实习生和志愿者
  7. 开源工作流HYAppFrame来了
  8. Android Material Design 之 Activity 跳转水波纹扩散动画
  9. 旅游景点如何做推广?
  10. C语言二维数组范德蒙,浅谈范德蒙德(Vandermonde)方阵的逆矩阵的求法以及快速傅里叶变换(FFT)中IDFT的原理...