nginx-1.8.0 rpm包製做

一、安裝rpm-buildphp

# yum install rpm-build

二、建立製做RPM包目錄nginx

# 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生成目錄

三、將源碼拷貝到/root/rpmbuild/SOURCES目錄下web

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

四、編寫SPEC文件app

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包less

rpmbuild  
-ba 既生成src.rpm又生成二進制rpm 
-bs 只生成src的rpm 
-bb 只生二進制的rpm 
-bp 執行到pre 
-bc 執行到 build段 
-bi 執行install段 
-bl 檢測有文件沒包含

能夠先使用bp參數,再bc參數,再bi參數,最後再ba參數post

相關文章
相關標籤/搜索