歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

簡單制作RPM二進包實例

有好多朋友問到怎麼制作rpm包,可不可把其它服務器上編譯好的軟件目錄復雜到其它服務器上直接應用等等。。。這裡做個簡單的介紹,高級復雜的不會。

此方法是通過編寫spec文件,使用rpmbuild來完成一個rpm的打包。

以nginx為例進行介紹

制作平台:CentOS 5.x X86_64

四步走:

第一步:建立目錄結構

mkdir /usr/src/RedHat/{SOURCES,SPECS,BUILD,RPMS,SRPMS} -p

相關目錄介紹:

  1. /usr/src/redhat/SOURCES    #存放源代碼、補丁等文件 
  2. /usr/src/redhat/SPECS      #存放用於管理rpm制作進程的spec文件 
  3. /usr/src/redhat/BUILD      #解壓後的文件存放目錄 
  4. /usr/src/redhat/RPMS       #存放由rpmbuild制作好的二進制包 
  5. /usr/src/redhat/SRPMS      #存放由rpmbuild制作好的源碼包 
第二步:把源碼包放在SOURCES目錄下 cd /usr/src/redhat/SOURCES wget http://nginx.org/download/nginx-1.2.0.tar.gz   第三步:生成nginx.spec文件  
  1. cd /usr/src/redhat/SPECS 
  2. cat nginx.spec 
  3. # spec file for nginx 
  4. # Build 2012-07-17 
  5. # By opsren 
  6. Summary: High performance web server 
  7. Name: Nginx 
  8. Version: 1.2
  9. Release: 0.el5.ngx 
  10. License: 2-clause BSD-like license 
  11. Group: Applications/Server 
  12. Source: http://nginx.org/download/nginx-1.2.0.tar.gz 
  13. URL: http://nginx.org 
  14. Distribution: Centos/Redhat 
  15. Packager: qiuzhijun <[email protected]
  16.   
  17. %description 
  18. Nginx ("engine x") is a high performance HTTP and reverse proxy server, as well as a mail(IMAP/POP3/SMTP) proxy server. 
  19. %prep 
  20. tar zxf $RPM_SOURCE_DIR/nginx-1.2.0.tar.gz 
  21. %build 
  22. cd nginx-1.2.0 
  23. ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre --lock-path=/var/run/nginx.lock --pid-path=/var/run/nginx.pid 
  24. make 
  25. %install 
  26. cd nginx-1.2.0 
  27. make install 
  28. %preun 
  29. if [ -z "`ps aux | grep nginx | grep -v grep`" ];then 
  30. pkill nginx >/dev/null 
  31. exit 0 
  32. fi 
  33. %files 
  34. /usr/local/webserver/nginx 
 
第四步:RPM包制作 首先系統要安裝好必備的制作工具:gcc、rpmbuild等
  1. yum -y install gcc rpm-build pcre-devel 
  2. cd /usr/src/redhat/SPECS/ 
  3. rpmbuild -bb nginx.spec 
通過上面這條命令,會在/usr/src/redhat/RPMS/x86_64/下面生成nginx-1.2.0-1.el5.ngx.x86_64.rpm這個文件   -bb 這個選項就是制作二進制包(build binary package only from <specfile>)   對spec文件內容進行簡單說明: spec文件是制作rpm包的核心!
  1. 以#開頭的是注釋信息; 
  2. Summary:對相關軟件進行簡單描述說明 
  3. Name:定義rpm包的名稱 
  4. Version:定義軟件的版本號 
  5. Release:發行版本 
  6. License:定義許可證 
  7. Group:說明軟件屬於哪種應用類型 
  8. Source:軟件源碼下載地址 
  9. URL:軟件相關官方站點 
  10. Distribution: 發行版系列 
  11. Packager: 制作人的簡單信息 
  12.   
  13. %description:軟件詳細描述信息 
  14. %prep:軟件編譯之前的處理 
  15. %build:編譯軟件 
  16. %install:安裝軟件 
  17. %preun:定義卸載之前的動作 
  18. %files:指定要打包的軟件包,這裡是/usr/local/webserver/nginx 
 
對於更詳細的說明請參考官方資料:http://www.rpm.org/max-rpm/ch-rpm-inside.html   下面是apache的spec文件實例:
  1. # spec file for apache 
  2. # Build 2012-07-17 
  3. # By opsren 
  4. Summary: High stability web server 
  5. Name: Apache 
  6. Version: 2.2
  7. Release: 22.el5
  8. License: 2-clause BSD-like license 
  9. Group: Applications/Server 
  10. Source: http://apache.etoak.com/httpd/httpd-2.2.22.tar.gz 
  11. URL: http://apache.org 
  12. Distribution: Centos/Redhat 
  13. Packager: qiuzhijun <[email protected]
  14.   
  15. %description 
  16. Apache is a first web server 
  17. %prep 
  18. tar zxf $RPM_SOURCE_DIR/httpd-2.2.22.tar.gz 
  19. %build 
  20. cd httpd-2.2.22 
  21. ./configure --prefix=/usr/local/webserver/apache --enable-so --enable-deflate --enable-headers --enable-mods-shared=all --enable-rewrite 
  22. make 
  23. %install 
  24. cd httpd-2.2.22 
  25. make install 
  26. %preun 
  27. if [ -z "`ps aux | grep httpd | grep -v grep`" ];then 
  28. pkill httpd >/dev/null 
  29. exit 0 
  30. fi 
  31. %files 
  32. /usr/local/webserver/apache 
 以後對於相同或類似平台可以到其它服務器上進行rpm安裝部署。   另外還有一種rpm打包的方法:rpm_create 這是一種新的打rpm的工具,不用spec語言,只需要會簡單的shell命令,即可完成打包操作,非常方便,結合了spec語言和checkinstall,相比spec方法要簡單很多!   官方站點:http://code.google.com/p/rpmcreate/ 下載站點:wget http://rpmcreate.googlecode.com/files/rpm_create-1.7.5-9.x86_64.rpm 大家可以去官方站點參考!
Copyright © Linux教程網 All Rights Reserved