How to create linux's RMP installation package?

本文参考于:

 

 Linux下制作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.自带中文输入法(增强五笔和增强拼音),实用方便。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行均为说明。    
   
  (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    
  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:zhsoft@etang.com)    
  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   Siz

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值