1)RPM(Redhat Package Management)是由RedHat研发的,在Linux系统下的系统包管理工具。
RPM包的产生目的:使包的安装和卸载过程更容易,他能够证实一个包是否已正确安装了,能够简化包的建立过程,能够从源代码建立整个包,他能用于不同的体系结构。RPM系统已成为现在Linux系统下包管理工具事实上的标准,并且他也移植到很多商业的unix系统之下。
RPM包组成:由包标签对他标识,包标签包含软件名,软件版本,包的发行版本几部分。在包的内部还包含包的建立时间,包的内容描述,安装包的任何文档的大小,数字签名以证实包的完整性等信息。RMP包还包含包内的文档信息,其中包括:每个文档的文档名,每个文档的权限,文档的属组和拥有者,每个文档的md5校验和,文档的内容等。
RPM包名的组成:rpm包的名字都包含一个后缀“arch.rpm”,arch 指的是体系结构,对于Intel平台的有i386、i586、i686等,您所安装的包必须要和机器上的共享库的版本相匹配。假如您发现某个RPM包没有安装,您能够自己安装。任何时候,您都能够(必须是root用户)安装RPM包。
RPM包管理系统提供的功能:安装新的包,卸载旧的包,将一个旧包升级为新的包,获得已安装包的信息等。
周详讲述RPM源码包的构成:
RPM需要一系列目录完成建立的工作。正常的目录结构通常由一个顶级目录/usr/src/redhat/和五个子目录构成。这五个子目录分别是:
SOURCES------包含原始的源文档和补丁文档。
SPECS--------包含控制RPM包建立过程的spec文档。
BUILD--------包含源码解包和软件建立的目录。
RPMS---------包含建立过程创建的二进制包文档。
SRPMS--------包含建立过程创建的源码包文档。
(在RPMS或SRPMS目录下通常还会有关于RPM包目标平台的目录。例如,i386、i586、i686等代表和Intel兼容cpu的平台,noarch目录下的RPM包代表能够在任何平台下执行。)
SPEC文档
spec文档是整个RPM包建立过程的中央,他的作用就如同编译程式时的Makefile文档。spec文档包含建立一个RPM包必需的信息,包括哪些文档是包的一部分连同他们安装在哪个目录下。这个文档一般分为如下的几节:
(1) Preamle(序言)
序言包含用户请求包的信息时所显示的内容。他能够包含包的功能描述、包的软件版本、版权信息和所属的包组等。Summary 是一行关于该软件包的描述,Name 是该软件包的基名,Version 是该软件的版本号,Release 是 RPM 本身的版本号,假如修复了 spec 文档中的一个错误并发布了该软件同一版本的新 RPM,就应该增加发行版号。License 应该给出一些许可术语(如:"GPL"、"Commercial"、"Shareware"),Group 标识软件类型。那些试图帮助人们管理 RPM 的程式通常按照组列出 RPM。您能够在usr/share/doc/rpm-4.0.4/GROUPS 文档看到一个 Red Hat 使用的组列表(假设您安装的 RPM 版本是 4.0.4)。但是您还能够使用那些组名以外的名称。Source0、Source1等等给这些源文档命名(通常为 tar.gz 文档)。% 和 % 是 RPM 宏,他们扩展成为头中定义的 rpm 名称和版本。
要注意的是,您不要在 Source 语句中包含任何路径。缺省情况下,RPM 会在 /usr/src/redhat/SOURCES 中寻找文档,请将您的源文档复制或链接到那里。(要使 spec 文档尽量可移植的话,应当尽量避免嵌入自己研发机器上的假想路径。其他研发人员就能够指示 RPM 在别的目录下查找源文档,而不用修改您的 spec 文档。)
接下来的部分从 辳cription 行开始。您应该在这里提供该软件更多的描述,这样任何人使用 rpm -qi 查询您的软件包时都能够看到他。您能够解释这个软件包做什么,描述任何警告或附加的配置指令,等等。
(2) Prep节
Prep节进行实际的打包准备工作,他是使用节前缀%prep表示的。一般而言,这一节的主要工作是检查标签语法是否正确,删除旧的软件源程颍园闯淌降膖ar文档进行解码。假如包含补丁(patch)文档,将补丁文档应用到解开的源码中。他一般包含%setup和%patch两个命令。%setup用于将软件源码包解开,执行%patch可将补丁文档加入解开的源程式中。
%setup
-n newdir---------将压缩的软件源程式在newdir目录下解开。
-c ---------------在解开源程式之前先创建目录。
-b num------------在包含多个源程式时,将第num个源程式解压缩。
-T----------------不使用缺省的解压缩操作。
例如:
%setup -T -b 0
/*解开第一个源程式文档。*/
%setup -c -n newdir
/*创建目录newdir,并在此目录之下解开源程式。*/
%patch
%patchN-------这里N是数字,表示使用第N个补丁文档,等价于%patch -P N
-p0-----------指定使用第一个补丁文档,-p1指定使用第二个补丁文档。 -s------------在使用补丁时,不显示任何信息。
-b name-------在加入补丁文档之前,将源文档名上加入name。若为指定此参数,则缺省源文档加入.orig。
-T------------将任何打补丁时产生的输出文档删除。
(3) Build节
这一节主要用于编译源码,他是使用节前缀%build表示的。这一节一般由多个make命令组成。
(4) Install节
这一节主要用于完成实际安装软件必须执行的命令,他是使用节前缀%install表示的。这一节一般是由make install指令构成,但是有时也会包含cp、mv、install等指令。
这一节还能指定在用户安装的系统上,包安装时运行的脚本。这样的脚本称为安装(卸载)脚本。他能够指定包安装前、包安装后、包除去前、包除去后的系统必须运行的外壳程式段。在用户安装的系统上,为了验证一个包是否已成功安装的验证脚本也可由这一节指定。
(5) Clean节
这一节所描述的内容表示在完成包建立的工作之后,自动执行此节下的脚本进行附加的清除工作,他是使用节前缀%clean表示的。一般而言,这一节的内容是简单地使用rm -rf $RPM_BUILD_ROOT命令,无需指定此节的其他内容。
(6) 文档列表
这一节指定构成包的文档的列表,他是使用节前缀%files表示的。此外,他还包含一系列宏控制安装后的文档属性和配置信息。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



