RPM製作

  1. # 這個區域定義的Name、Version這些字段對應的值可以在後面  
  2. # 通過%{name},%{version}這樣的方式來引用,類似於C語言中的宏  
  3.    
  4. # Name制定了軟件的名稱  
  5. Name:       nginx  
  6. # 軟件版本  
  7. Version:    1.5.2   
  8. # 釋出號,也就是第幾次製作rpm  
  9. Release:    1%{?dist}  
  10. # 軟件的介紹,必須設置,最好不要超過50個字符  
  11. Summary:    Nginx from WangYing  
  12.    
  13. # 軟件的分組,可以通過/usr/share/doc/rpm-4.8.0/GROUPS文件中選擇,也可以  
  14. # 在相應的分類下,自己創建一個新的類型,例如這裏的Server  
  15. Group:      Application/Server  
  16. # 許可證類型  
  17. License:    GPL  
  18. # 軟件的源站  
  19. URL:        http://nginx.org  
  20. # 製作rpm包的人員信息  
  21. Packager:   WangYing <[email protected]>  
  22. # 源碼包的名稱,在%_topdir/SOURCE下,如果有多個源碼包的話,可以通過  
  23. # Source1、Source2這樣的字段來指定其他的源碼包  
  24. Source0:    %{name}-%{version}.tar.gz  
  25. # BuildRoot指定了make install的測試安裝目錄,通過這個目錄我們可以觀察  
  26. # 生成了哪些文件,方便些files區域。如果在files區域中寫的一些文件報  
  27. # 不存在的錯誤,可以查看%_topdir/BUILDROOT目錄來檢查有哪些文件。  
  28. BuildRoot:  %_topdir/BUILDROOT  
  29. # 指定安裝的路徑  
  30. Prefix:     /usr/local/nginx-1.5.2  
  31.    
  32. # 製作過程需要的工具或軟件包  
  33. BuildRequires:  gcc,make  
  34. # 安裝時依賴的軟件包  
  35. Requires: pcre,pcre-devel,openssl  
  36.    
  37. # 軟件的描述,這個可以盡情地寫  
  38. %description  
  39. Nginx is a http server  
  40.    
  41. # %prep指定了在編譯軟件包之前的準備工作,這裏的  
  42. # setup宏的作用是靜默模式解壓並切換到源碼目錄中,  
  43. # 當然你也可以使用tar命令來解壓  
  44. %prep  
  45. %setup -q  
  46.    
  47. # 編譯階段,和直接編譯源代碼類似,具體的操作或指定的一些參數由configure文件決定。  
  48. %build  
  49. CFLAGS="-pipe -O2 -g -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror" ./configure --prefix=%{prefix}  
  50. # make後面的意思是:如果是多處理器,則並行編譯  
  51. make %{?_smp_mflags}  
  52.    
  53. # 安裝階段  
  54. %install  
  55. # 先刪除原來的測試安裝的,只有在製作失敗了%{buildroot}目錄纔會有內容,  
  56. # 如果成功的話,目錄下會被清除。  
  57. # %{buildroot}指向的目錄不是BuildRoot(%_topdir/BUILDROOT)指定的目錄,  
  58. # 而是該目錄下名稱與生成的rpm包名稱相同的子目錄。例如我的是  
  59. # /usr/src/redhat/BUILDROOT/nginx-1.5.2-1.el6.x86_64  
  60. rm -rf %{buildroot}  
  61. # 指定安裝目錄,注意不是真實的安裝目錄,是在製作rpm包的時候指定的  
  62. # 安裝目錄,如果不指定的話,默認就會安裝到configure命令中指定的prefix路徑,  
  63. # 所以這裏一定要指定DESTDIR  
  64. make install DESTDIR=%{buildroot}  
  65.    
  66. # 安裝前執行的腳本,語法和shell腳本的語法相同  
  67. %pre  
  68.    
  69. # 安裝後執行的腳本  
  70. %post  
  71.    
  72. # 卸載前執行的腳本,我這裏的做的事情是在卸載前將nginx服務器停掉  
  73. %preun  
  74.     MSG=`ps aux | grep nginx | grep -v "grep"`  
  75.     if [ -z "$MSG" ];then  
  76.         killall nginx 1>/dev/null 2>/dev/null  
  77.     fi  
  78.    
  79. # 卸載完成後執行的腳本  
  80. %postun  
  81.     rm -rf %{prefix}  
  82.    
  83. # 清理階段,在製作完成後刪除安裝的內容  
  84. %clean  
  85. rm -rf %{buildroot}  
  86.    
  87. #指定要包含的文件  
  88. %files  
  89. #設置默認權限,如果沒有指定,則繼承默認的權限  
  90. %defattr  (-,root,root,0755)  
  91. %{prefix}  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章