隨著RedHat Linux的風靡全球,其軟體包管理工具及格式RPM也得到推廣。基於RPM原始碼開放、安裝卸載簡單、升級維護方便及查詢功能強大的特點,越來越多的開發人員喜歡採用RPM格式來發布自己的軟體包,更多的使用者從中受益。那麼,RPM軟體包是怎樣製作的呢?
其實,製作RPM軟體包並不是一件複雜的工作,其中的關鍵在於編寫SPEC軟體包描述檔案。下面以我製作小趙編輯器LZE的軟體包lze-6.0-1.i386.rpm)為例,詳細說明一下軟體包的製作過程。
1.mkdir -p /usr/src/dist/{BUILD,RPMS/i386}
上述命令用於建立兩個目錄/usr/src/dist/BUILD與/usr/src/dist/RPMS/i386,前一個目錄是RPM建立軟體包時用的目錄,後一個是RPM輸出軟體包的目錄,我的LZE軟體包lze-6.0-1.i386.rpm就是在此目錄下存放的。這兩個目錄不建立,運行rpm命令建包時將報錯退出。
注意:輸出目錄名i386,意味著這是台X86的機器。如果你的機器與此體系不同,則目錄名也要相應更換。
2.編寫軟體包描述檔案lze-6.0-1.spec
要想製作一個軟體包,就必須寫一個軟體包描述檔案SPEC)。這個檔案中包含了軟體包的諸多資訊,如軟體包的名字,版本,類別,說明摘要,建立時要執行什麼指令,安裝時要執行什麼操作,以及軟體包所要包含的檔案清單等等。
LZE軟體包描述檔案lze-6.0-1.spec比較簡單,僅用於建立二進位程式包。其描述檔案內容如下:每行開頭的數字為所在行在檔案中的行號)
1 Summary:小趙全螢幕中英文多視窗多功能編輯器Linux/UNIX系統適用)
2 Name:lze
3 Version:6.0
4 Release:1
5 Vendor:縱橫軟體製作中心Email:zhsoft@etang.com)
6 Copyright:Share
7 Group:Applications/Editors
8 Source:http://zhsoft.myetang.com/lze-6.0.tar.gz
9 %description
10 小趙編輯器,是為使用SCO UNIX,Linux多使用者系統的廣大使用者專門設計的全螢幕多窗
11 口中英文多功能編輯器。
12 它主要有以下十大特點:1.全螢幕菜單操作。2.顯示方式多樣。3.塊操作豐富。4.十
13 字製表功能強大。5.多視窗操作靈活自如。6.檔案操作功能齊全。7.解釋輸出功能獨具特
14 色。8.內建中文IME增強五筆和增強拼音),實用方便。9.十六進位編輯功能,如虎
15 添翼。10.即時翻譯,按到即譯。
16 總之,小趙編輯器會成為您在UNIX,Linux系統上編製程式和書寫一般性文稿的好幫手。
17 它將在工作中助您一臂之力,輕鬆上陣,遊刃有餘!
18
19 %prep
20 # prep start.
21
22 %build
23 # build start.
24 cp /root/{讀我,著作權聲明} .
25
26 %install
27 # install start.
28
29 %files
30 %defattr -,root,root)
31 %doc 讀我
32 %doc 著作權聲明
33 %config /etc/funkey.def
34 %config /etc/inputme.def
35
36 /usr/bin/lze
37 /usr/bin/lzeime.py
38 /usr/bin/lzeime.wb
39
40 %changelog
41
42 * Fri May 1 1998 雨亦奇
43 - 增加多視窗操作
44
45 * Mon Mar 24 1997 雨亦奇
46 - 增加塊操作命令
47
描述檔案說明如下:
1)檔案頭
它包含以下幾個域:
* Summary:
軟體包一句話說明,一行有效。
* Name:
軟體包的名字,RPM用該名字與版本號碼,釋出號及體系號來命名軟體包。如,本例輸出的軟體包名為lze-6.0-1.i386.rpm。
* Version:
軟體版本號碼。僅當軟體較以前有較大改變時才增加版本號碼。
* Release:
軟體釋出號。若軟體較以前改變較小,則僅增加釋出號,不改變版本號碼。
* Vendor:
軟體開發人員的名字。
* Copyright:
軟體包所採用的著作權規則。具體有: GPL自由軟體),BSD,MIT,Public Domain公用域),Distributable貢獻),commercial商業),Share共用)等。
* Group:
軟體包所屬類別,具體類別有:
Amusements/Games 娛樂/遊戲)
Amusements/Graphics娛樂/圖形)
Applications/Archiving 應用/檔案)
Applications/Communications應用/通訊)
Applications/Databases 應用/資料庫)
Applications/Editors 應用/編輯器)
Applications/Emulators 應用/模擬器)
Applications/Engineering 應用/工程)
Applications/File 應用/檔案)
Applications/Internet 應用/網際網路)
Applications/Multimedia應用/多媒體)
Applications/Productivity 應用/產品)
Applications/Publishing應用/印刷)
Applications/System應用/系統)
Applications/Text 應用/文本)
Development/Debuggers 開發/調試器)
Development/Languages 開發/語言)
Development/Libraries 開發/函數庫)
Development/System 開發/系統)
Development/Tools 開發/工具)
Documentation 文檔)
System Environment/Base系統內容/基礎)
System Environment/Daemons 系統內容/守護)
System Environment/Kernel 系統內容/核心)
System Environment/Libraries 系統內容/函數庫)
System Environment/Shells 系統內容/介面)
User Interface/Desktops使用者介面/案頭)
User Interface/X 使用者介面/X視窗)
User Interface/X Hardware Support 使用者介面/X硬體支援)
* Source:
來源程式軟體包的名字。
* %description:
軟體包具體說明,可寫在多個行上。樣本中第10-18行均為說明。