当前位置:Linux教程 - Linux综合 - 自己如何制作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.自带中文输入法(增强五笔和增强拼音),实用方便。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 (娱乐/游戏)
[1] [2] [3] 下一页 

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行均为说明。 (2)%prep段 这个段是预处理段,通常用来执行一些解开源程序包的命令,为下一步的编译安装作准备。%prep和下面%build,%install段一样,除了可以执行RPM所定义的宏命令(以%开头)以外,还可以执行SHELL命令,命令可以有很多行。示例中,本段只有第20行一行注释语句(以#开头),不执行任何操作。 (3)build段 本段是建立段,所执行的命令为生成软件包服务。 本段第23行是注释行,第24行执行的是拷贝命令,将/root目录下的两个文件(读我,版权声明)拷贝到软件包建立目录(/usr/src/dist/BUILD)。 (4)%install段 本段是安装段,其中的命令在安装软件包时将执行。示例中,本段只有第27行一行注释语句(以#开头),不执行任何操作。 (5)%files段 本段是文件段,用于定义软件包所包含的文件,分为三类--说明文档(doc),配置文件(config)及执行程序,还可定义文件存取权限,拥有者及组别。本段中: 第30行-%defattr宏:定义文件存取权限为默认值(用-表示默认值,也可选择八进制数值,如0777等),定义拥有者为root,定义组别为root。 第31,32行-%doc宏:用该宏定义软件包所含的说明文档,若没有指定目录,则目录为/usr/src/dist/BUILD。每个宏只能定义一个说明文档。说明文档一般安装在“/usr/doc/软件包名-版本号-释出号”目录下。 第33,34行-%config宏:定义软件包应用的配置文件,象sendmail.cf,passwd等。当卸载含有配置文件的软件包时,任何未作改动的配置文件将被删除,改动过的配置文件将自动改名,后缀加上.rpmsave,以便再度安装这个软件包时可以迅速恢复使用。 第36-38行-为软件包所包含的文件名列表,可以写许多行。如果文件名指示的是一个目录,则该目录下的所有文件将被包含在软件包中,注意不要弄错了。 (6)%changelog段 本段是修改日志段。你可以将软件的每次修改记录到这里,保存到发布的软件包中,以便查询之用。 每一个修改日志都有这样一种格式:第一行是:* 星期 月 日 年 修改人 电子信箱。 其中:星期、月份均用英文形式,用中文会出错。 接下来的行写的应是修改了什么地方,可写多行。一般以减号起始,便于查阅。 3.rpm -bb lze-6.0-1.spec 用此命令生成软件包,执行后屏幕将显示如下信息:(每行开头为行号) 1 Executing: %prep 2 + umask 022 3 + cd /usr/src/dist/BUILD 4 + exit 0 5 Executing: %build 6 + umask 022 7 + cd /usr/src/dist/BUILD 8 + cp /root/读我 /root/版权声明. 9 + exit 0 10 Executing: %install 11 + umask 022 12 + cd /usr/src/dist/BUILD
上一页 [1] [2] [3] 下一页 

13 + exit 0 14 Processing files: lze 15 Executing: %doc 16 + umask 022 17 + cd /usr/src/dist/BUILD 18 + DOCDIR=/usr/doc/lze-6.0 19 + eXPort DOCDIR 20 + rm -rf /usr/doc/lze-6.0 21 + /bin/mkdir -p /usr/doc/lze-6.0 22 + cp -pr 读我 /usr/doc/lze-6.0 23 + cp -pr 版权声明 /usr/doc/lze-6.0 24 + exit 0 25 Finding Provides: (using /usr/lib/rpm/find-provides)... 26 Finding Requires: (using /usr/lib/rpm/find-requires)... 27 Requires: ld-Linux.so.2 libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) 28 Wrote: /usr/src/dist/RPMS/i386/lze-6.0-1.i386.rpm 第28行显示: 制作完成软件包,名字为lze-6.0-1.i386.rpm,在/usr/src/dist/RPMS/i386目录下。 4.软件包制作完成后,可用以下命令查询一下,看看效果。如果不满意的话,可以再次修改软件包描述文件,重新运行上一步命令,产生新的RPM软件包。 转到/usr/src/dist/RPMS/i386目录,执行以下命令: (1)rpm -qpi lze-6.0-1.i386.rpm 此命令用于查询指定软件包的头部信息,结果如下:(以行号开头) 1 Name: lze Relocations: (not relocateable) 2 Version : 6.0 Vendor: 纵横软件制作中心(Email:[email protected]) 3 Release : 1 Build Date: 2001年07月12日 星期四 13时33分21秒 4 Install date: (not installed) Build Host: 纵横软件制作中心 5 Group : Applications/Editors Source RPM: lze-6.0-1.src.rpm 6 Size: 532081 License: Share 7 Summary : 小赵全屏幕中英文多窗口多功能编辑器(Linux/UNIX系统适用) 8 Description : 9 小赵编辑器,是为使用SCO UNIX,Linux多用户系统的广大用户专门设计的全屏幕多窗 10 口中英文多功能编辑器。 11 它主要有以下十大特点:1.全屏幕菜单操作。2.显示方式多样。3.块操作丰富。4.十 12 字制表功能强大。5.多窗口操作灵活自如。6.文件操作功能齐全。7.解释输出功能独具特 13 色。8.自带中文输入法(增强五笔和增强拼音),实用方便。9.十六进制编辑功能,如虎 14 添翼。10.即时翻译,按到即译。 15 总之,小赵编辑器会成为您在UNIX,Linux系统上编制程序和书写一般性文稿的好帮手。 16 它将在工作中助您一臂之力,轻松上阵,游刃有余! (2)rpm -qpl lze-6.0-1.i386.rpm 此命令用于查询指定软件包的全部文件列表,将命令中的-qpl换作-qpd,将显示文档文件列表,换作-qpc将显示配置文件列表。 命令执行结果如下:(行号开头) 1 /etc/funkey.def 2 /etc/inputme.def 3 /usr/bin/lze 4 /usr/bin/lzeime.py 5 /usr/bin/lzeime.wb 6 /usr/doc/lze-6.0 7 /usr/doc/lze-6.0/版权声明 8 /usr/doc/lze-6.0/读我 查询结果一切正常,软件包制作到此结束。 小结 在Linux下制作RPM软件包关键在描述文件,写起来着实简单,根据上述步骤生成软件包后,就可以对外发布了。在其它机器上用安装命令(rpm -i 包名)可安装这个软件包,若想卸载,可用命令(rpm -e 包名)来卸载这个包,非常方便。 相关链接 相关文章 RPM: Linux下制作RPM软件包的关键所在 关键字 RPM, 来自ccidnet.com 最后更新: 2002年2月26日 © 2001 I-App Network 版权所有 联系我们|关于我们|隐私保护|法律声明 别问我,我也不知道能不能成功,呵呵,先放这里以后看,省得找不到,哪位兄弟制作过的话请回一下说一下经验OK?

(出处:http://www.sheup.com)


上一页 [1] [2] [3] 

10 口中英文多功能编辑器。 11 它主要有以下十大特点:1.全屏幕菜单操作。2.显示方式多样。3.块操作丰富。4.十 12 字制表功能强大。5.多窗口操作灵活自如。6.文件操作功能齐全。7.解释输出功能独具特 13 色。8.自带中文输入法(增强五笔和增强拼音),实用方便。9.十六进制编辑功能,如虎 14 添翼。10.即时翻译,按到即译。 15 总之,小赵编辑器会成为您在UNIX,Linux系统上编制程序和书写一般性文稿的好帮手。 16 它将在工作中助您一臂之力,轻松上阵,游刃有余! (2)rpm -qpl lze-6.0-1.i386.rpm 此命令用于查询指定软件包的全部文件列表,将命令中的-qpl换作-qpd,将显示文档文件列表,换作-qpc将显示配置文件列表。 命令执行结果如下:(行号开头) 1 /etc/funkey.def 2 /etc/inputme.def 3 /usr/bin/lze 4 /usr/bin/lzeime.py 5 /usr/bin/lzeime.wb 6 /usr/doc/lze-6.0 7 /usr/doc/lze-6.0/版权声明 8 /usr/doc/lze-6.0/读我 查询结果一切正常,软件包制作到此结束。 小结 在Linux下制作RPM软件包关键在描述文件,写起来着实简单,根据上述步骤生成软件包后,就可以对外发布了。在其它机器上用安装命令(rpm -i 包名)可安装这个软件包,若想卸载,可用命令(rpm -e 包名)来卸载这个包,非常方便。 相关链接 相关文章 RPM: Linux下制作RPM软件包的关键所在 关键字 RPM, 来自ccidnet.com 最后更新: 2002年2月26日 © 2001 I-App Network 版权所有 联系我们|关于我们|隐私保护|法律声明 别问我,我也不知道能不能成功,呵呵,先放这里以后看,省得找不到,哪位兄弟制作过的话请回一下说一下经验OK?

(出处:http://www.sheup.com)


上一页 [1] [2] [3] [4] 

命令执行结果如下:(行号开头) 1 /etc/funkey.def 2 /etc/inputme.def 3 /usr/bin/lze 4 /usr/bin/lzeime.py 5 /usr/bin/lzeime.wb 6 /usr/doc/lze-6.0 7 /usr/doc/lze-6.0/版权声明 8 /usr/doc/lze-6.0/读我 查询结果一切正常,软件包制作到此结束。 小结 在Linux下制作RPM软件包关键在描述文件,写起来着实简单,根据上述步骤生成软件包后,就可以对外发布了。在其它机器上用安装命令(rpm -i 包名)可安装这个软件包,若想卸载,可用命令(rpm -e 包名)来卸载这个包,非常方便。 相关链接 相关文章 RPM: Linux下制作RPM软件包的关键所在 关键字 RPM, 来自ccidnet.com 最后更新: 2002年2月26日 © 2001 I-App Network 版权所有 联系我们|关于我们|隐私保护|法律声明 别问我,我也不知道能不能成功,呵呵,先放这里以后看,省得找不到,哪位兄弟制作过的话请回一下说一下经验OK?

(出处:http://www.sheup.com/)


上一页 [1] [2] [3] [4] [5]