包里有什么?
由于包管理软件能够做所有我们要求的不可思议的事情,你可能会认为在包里带有一个微小的电脑人。可是实际上并没有那么神奇。下面是对RPM包中所含的重要组成部分快速的概览。
RPM 包标签
每一个RPM包都有一组特别的信息用来唯一地标识它。我们称这样的信息为[包标签]。
下面有两个包标签例子:
l nls-1.0-1
l perl-5.001m-4
这些标签看起来好象没有什么共同点,但实际上它们都遵循RPM包标签的命名习惯。
每个包标签都包含三个不同的部分,让我们一一解读:
第一部分:软件名称
每个包标签都从软件名称开始。这个名字或者源自于被打包的应用的名称,或者是对打包进来的一组相关程序的描述。上面例子所列包的软件名称是:nls 和 perl。正如你看到的,软件名称与包标签中其他部分用一条短横(-)隔开。
第二部分:软件的版本
包标签中紧接着的是被打包软件的版本标识。如果是将许多相关程序放入包中,那么这个标识可能是一个自由选择的数字。然而,如果包里包含有一个主要的应用,那么软件版本就直接来自于这个应用的开发者(所定义的版本)。实际的版本规范是很复杂的,从上面所举的例子也可以看到。上面例子中版本标识分别是:1.0 和 5.001m。版本标识与报标签剩余部分之间用一条短横(-)隔开。
第三部分:包发布号
这是包标签里最含混的一部分。它是由包的建立者选择的。它反映了同一版本软件被重复打包发布的次数。通常在前一个包发行一段时间后有新的BUG被发现时会重新打包。传统上包的发布号从1开始。上面例子中包发布号分别是:1 和 4。
包标签和包文件名:相似但区别明显
包标签是由RPM程序内部使用的。例如,当你要求RPM程序列出所有已经安装的包时,将会得到包标签列表。当一个包文件被创建时,包文件名包含有包标签。这并不是技术上的要求,但是这样做使对一些事情的跟踪更容易。
然而,包文件可能被重命名,但是RPM程序丝毫不会被新文件名搞糊涂。那是因为包标签是包含在包文件内部的。如果需要对包文件内部有一个技术上清楚的观察,可以参考附录A。
一般包信息
包里自然包含有一些概要的信息。这些信息都是:
l 包被建立的日期和时间
l 包内容的描述
l 包中文件大小的总和
l 允许与相似包成为一个组的信息
l 一个数字签名用以校验包的正确性和完整性
包中每个文件的信息
每个包中也有每个文件的信息。这些信息包含:
l 文件名和被安装的路径
l 每个文件的权限
l 每个文件的所有者和所属组
l 每个文件的MD5总和检测
l 文件的内容