为什么
RPM
在使用上很方便呢?我们前面提过,
RPM
这个软件管理员所处理的软件,是由软件
提供者在特定的
Linux
作业平台上面½该软件编译完成并且打包好。那使用者只要拿到这个打包好
的软件,
然后½里头的文件放置到应该要摆放的目录,不就完成安装啰?对啦!就是这样!
但是有没有想过,我们在前一章里面提过的,有些软件是有相关性的,例如要安装网卡驱动程序,就
得要有
kernel source
与
gcc
及
make
等软件。那么我们的
RPM
软件是否一定可以安装完成呢?如
果该软件安装之后,却找不到他相关的前驱软件,
那不是挺麻烦的吗?因为安装好的软件也无法使
用啊!
为了½决这种具有相关性的软件之间的问题
(
就是所谓的软件相依属性
)
,
RPM
就在提供打包的软件
时,同时加入一些讯息登录的功能,这些讯息包括软件的版本、
打包软件者、相依属性的其他软件、
本软件的功能说明、本软件的所有文件记录等等,然后在
Linux
系统上面亦½立一个
RPM
软件数
据库,如此一来,当你要安装某个以
RPM
型态提供的软件时,在安装的过程中,
RPM
会去检验
一下数据库里面是否已经存在相关的软件了,
如果数据库显示不存在,那么这个
RPM
文件『预设』
就不能安装。呵呵!没有错,这个就是
RPM
类型的文件最为人所诟病的『
软件的属性相依
』问题
啦!
22.1.5 RPM
属性相依的克服方式:
YUM
在线升级
为了重复利用既有的软件功能,因此很多软件都会以函式库的方式释出部分功能,以方便其他软件的
呼½应用,
例如
PAM
模块的验证功能。此外,为了½省用户的数据量,目前的
distributions
在释
出软件时,
都会½软件的内容分为一般使用与开发使用
(development)
两大类。所以你才会常常看
到有类似
pam-x.x.rpm
与
pam-devel-x.x.rpm
之类的档名啊!而预设情况下,大部分的
software-devel-x.x.rpm
都不会安装,因为终端用户大部分不会去开发软件嘛!
因为有上述的现象,因此
RPM
软件文件就会有所谓的属性相依的问题产生
(
其实所有的软件管理几
乎都有这方面的情况存在
)
。
那有没有办法½决啊?前面不是谈到
RPM
软件文件内部会记录相依属
性的数据吗?那想一想,要是我½这些相依属性的软件先列表,
在有要安装软件需求的时候,先到
这个列表去找,同时与系统内已安装的软件相比½,没安装到的相依软件就一口气同时安装起来,
那
不就½决了相依属性的问题了吗?有没有这种机制啊?有啊!那就是
YUM
机制的由来!
CentOS (1)
先½释出的软件放置到
YUM
服务器内,然后
(2)
分析这些软件的相依属性问题,½软件内
的记录信息写下来
(header)
。
然后再½这些信息分析后记录成软件相关性的列表列表。这些列表数
据与软件所在的本机或网络位置可以称呼为容器或软件仓库或软件库
(repository)
。
当客户端有软件
安装的需求时,客户端主机会主动的向网络上面的
yum
服务器的软件库网址下载清单列表,
然后
透过列表列表的数据与本机
RPM
数据库已存在的软件数据相比½,就能够一口气安装所有需要的
具有相依属性的软件了。
整个流程可以简单的如下图说明: