1、查看操作系統版本和內核版本
2、創建相關目錄
/usr/src/redhat/SOURCES //存放源代碼,補丁,圖標等文件。
/usr/src/redhat/SPECS //存放用於管理rpm制作進程的spec文件。
/usr/src/redhat/BUILD //解壓後的文件存放在這裏。
/usr/src/redhat/RPMS //存放由rpmbuild制作好的二進制包。
/usr/src/redhat/SRPMS //存放由rpmbuild制作好的源碼包。
3、下載Nginx源碼包
下載源碼包到SOURCES目錄,不需要解壓。
4、手工創建SPEC文件,由於spec文件是由spec語言編寫的,請註意spec語言的語法。
SPEC文件內容如下:
#############################?
# Example Spec File For Nginx?
# Edited By LaoXu 7.Mar.2013?
#############################?
Summary: High Performance Web Server?
Name: nginx?
Version: 1.3.9?
Release: el5?
License: GPL?
Group: Applications/Server?
Source:?
URL:?
Distribution: Linux?
Packager: XuYuanzhen <absolutey.>?
%description?
nginx [engine x] is a HTTP and reverse proxy server, as well as a mail proxy server?
%prep?
rm -rf $RPM_BUILD_DIR/nginx-1.3.9?
zcat $RPM_SOURCE_DIR/nginx-1.3.9.tar.gz | tar -xvf -?
%build?
cd nginx-1.3.9?
./configure --prefix=/usr/local/nginx?
make?
%install?
cd nginx-1.3.9?
make install?
%preun?
if [ -z "`ps aux | grep nginx | grep -v grep`" ];then?
killall nginx >/dev/null?
exit 0?
fi?
%files?
/usr/local/nginx?5、開始RPM制作
在制作RPM包之前,需要安裝必要的編譯工具,如rpmbuild,gcc等。
開始編譯生成rpm包
cd /usr/src/RedHat/SPECS/
rpmbuild -bb nginx.spec //-ba 參數表示同時生成二進制包和源碼包 -bb 參數表示只生成二進制包
經過壹段時間的編譯後最終生成了rpm包文件
如圖所示,在/usr/src/redhat/RPMS/x86_64/該目錄下生成了我們需要的rpm包,由於我編譯的操作系統平臺是64bit的,所以生成的rpm包也是64位的文件。在指定的目錄下生成RPM,通常用%_topdir變量,需要在宏配置文件中指定,配置文件稱為macrofiles,它們通常為 /usr/lib/rpm/macros:/usr/lib/rpm/macros.*:~/.rpmmacros,這個在rhel 5.8中可以通過rpmbuild --showrc | grep macrofiles 查看,我們這裏在.rpmmacros文件中定義了生產rpm包的路徑為/usr/src/redhat
最後安裝生成的rpm包
至此Nginx源碼制作並安裝成功!