歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> Linux下制作RPM軟件包(1)

Linux下制作RPM軟件包(1)

日期:2017/3/6 15:37:29   编辑:關於Unix
隨著RedHat Linux 的風靡全球,其軟件包管理工具及格式RPM也得到推廣。基於RPM源代碼開放、安裝卸載簡單、升級維護方便及查詢功能強大的特點,越來越多的 開發 者喜歡采用RPM格式來發布自己的軟件包,更多的用戶從中受益。那麼,RPM軟件包是怎樣制作的呢?

隨著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:[email protected]

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.自帶中文http://edu.itbulo.com/work/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/Inte.net (應用/因特網)

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行均為說明

Copyright © Linux教程網 All Rights Reserved