本文分为两部分,第一部分阐述了 rpm 工具的功能连同 rpmbuild 工具,周详的介绍了 spec文档的书写规则连同关键部分,第二部分对一个典型的 spec 文档做了周详的分析。
一 、rpm 介绍
1. 概述
RPM全称是 Red Hat Package Manager(Red Hat包管理器)。几乎任何的 Linux 发行版本都使用这种形式的软件包管理安装、更新和卸载软件。
RPM是个开放的软件包管理系统。他工作于Red Hat Linux连同其他Linux和UNIX 系统,可被任何人使用。redhat软件公司鼓励其他厂商来了解RPM并在自己的产品中使用他。RPM的发布基于GPL协议。对于最终用户来说,使用RPM所提供的功能来维护系统是比较容易和轻松的。安装、卸载和升级RPM软件包只需一条命令就能够搞定。RPM维护了一个任何已安装的软件包和文档的数据库,能够让用户进行查询和验证工作。在软件包升级过程中,RPM会对配置文档进行特别处理,绝对不会丢失以往的定制信息。对于程式员RPM能够让我们连同软件的源代码打包成源代码和二进制软件包供最终用户使用。
RPM拥有功能强大的查询选项。我们能够搜索数据库来查询软件包或文档。也能够查出某个文档属于哪个软件包或出自哪儿。RPM软件包中的文档是以压缩格式存放的,拥有一个定制的二进制头文档,其中包含有关包和内容的信息,能够让我们对单个软件包的查询简便又快速。
RPM另一个强大的功能是进行软件包的验证。假如我们担心误删了某个软件包中的某个文档,我们就能够对他进行验证。任何非正常现象将会被通知。假如需要的话还能够重新安装该软件包。在重新安装过程中,任何被修改过的配置文档将被保留。
RPM设计目标之一就是要保持软件包的原始特征, 就象该软件的原始发布者发布软件时那样。通过使用RPM我们能够拥有最初的软件和最新的补丁程式,更有周详的软件构建信息。
概括的说:RPM有五种基本的操作功能(不包括创建软件包):安装、卸载、升级、查询、和验证。关于rpm命令的使用我们能够用以下命令:
[root@hostname root]rpm -help
来获的。
2.RPM工具功能
1) 安装
rpm -i ( or --install) options file1.rpm ... fileN.rpm 通过rpm -ivh能够把rpm软件包安装到系统中,当然也能够使用不同的参数选项,笔者建议使用-ivh ,使用该选项能够解决大部分rpm软件包的安装,至于周详的参数说明可用查看rpm的man 文档。
2 )删除
rpm -e ( or --erase) options pkg1 ... pkgN 假如某个软件包您再也不想使用了,那就用以上这个命令完全的把您指定的rpm软件包清除掉把。
3 )升级
rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm 由于开源软件更新速度快,用户当然要使用最新版本的软件包,此时最合适的就是rpm升级功能,当然最理想的参数选项就是-Uvh。
4 )查询
rpm -q ( or --query) options 实际上我们通常使用rpm工具最多的功能还是他的查询功能,比如查看软件包的版本、依赖关系等软件包的周详说明都要用到。最有用的参数选项是-qpi。
5 )校验已安装的软件包
rpm -V ( or --verify, or -y) options 一般我们可用通过该命令来验证已安装软件包,根据笔者的经验该命令一般没什么用途,只做一个了解就ok了。
3.spec文档规范
能熟练掌控以上命令连同部分参数含义,管理日常的rpm软件包就不成问题了。然而随着Linux风靡全球,越来越多的研发者喜欢采用RPM格式来发布自己的软件包。那么RPM软件包是怎样制作的呢?对大多数Linux研发工程师来说是比较陌生的。
其实,制作RPM软件包并不是一件复杂的工作,其中的关键在于编写SPEC软件包描述文档。要想制作一个rpm软件包就必须写一个软件包描述文档(SPEC)。这个文档中包含了软件包的诸多信息,如软件包的名字、版本、类别、说明摘要、创建时要执行什么指令、安装时要执行什么操作、连同软件包所要包含的文档列表等等。
描述文档说明如下:
(1) 文档头
一般的spec文档头包含以下几个域:
Summary:
用一句话概括该软件包尽量多的信息。
Name:
软件包的名字,最终RPM软件包是用该名字和版本号,释出号及体系号来命名软件包的。
Version:
软件版本号。仅当软件包比以前有较大改变时才增加版本号。
Release:
软件包释出号。一般我们对该软件包做了一些小的补丁的时候就应该把释出号加1。
Vendor:
软件研发者的名字。
Copyright:
软件包所采用的版权规则。具体有:GPL(免费软件),BSD,MIT,Public Domain(公共域),Distributable(贡献),commercial(商业),Share(共享)等,一般的研发都写GPL。
Group:
软件包所属类别,具体类别有:
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




