Linux下制作RPM软件包(1)

发表于:2007-07-04来源:作者:点击数: 标签:
随着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: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.自带中文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行均为说明

原文转自:http://www.ltesting.net