nginx-1.8.0 rpm包制作

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.1.tar.gz  nginx.conf  test.conf

4、编写SPEC文件

Name:            nginx    # 名称    
Version:         1.8.1    # 版本    
Release:        1%{?dist}  # 版本号
Summary:         High performance web server    # 简介    

Group:            Applications/Server    # 组名,可通过less /usr/share/doc/rpm-4.8.0/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 0755 %{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 0755 %{SOURCE5} $RPM_BUILD_ROOT/opt/wwwroot/www.51.com/www/index.php

%pre   # 安装前执行脚本

%post  # 安装后执行脚本
ln -sv /usr/local/app/nginx-1.8.1 /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.1

%clean
#[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT

%files  # 哪些文件放入rpm包
%defattr (-,root,root,0755)
%{_prefix}
%attr(0755,root,root) /etc/rc.d/init.d/%{name}
%doc /opt/wwwroot/www.51.com/www/index.php
%attr(0755,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参数

posted @ 2017-01-05 09:29  hexm  阅读(813)  评论(0编辑  收藏  举报
联系我:xiaoming.unix@gmail.com