一、安裝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