为了重复利用既有的软件功能,很多软件都会以函数库的方式发布部分功能,以方便其他软件的调用。例如,PAM模块的验证功能。此外,为了节省用户的数据量,目前的 distributions在发布软件时都会将软件的内容分为一般使用与开发使用 (development)两大类。所以常常看到有类似pam-x.x.rpm与 pam-devel-x.x.rpm之类的文件名。而默认情况下,大部分的 software-devel-x.x.rpm都不必安装,因为终端用户大部分不去做开发软件的工作。
因此,RPM软件文件就会有所谓的属性依赖的问题产生(其实所有的软件管理几乎都有这方面的情况存在)。那有没有办法解决呢?前面不是谈到 RPM软件文件内部会记录依赖属性的数据吗?那想一想,要是将这些依赖属性的软件先列表,在需要安装软件的时候,先到这个列表中查找,同时与系统内已安装的软件相比较,没安装到的依赖软件就会自动同时安装,那不就解决了依赖属性的问题了吗?有没有这种机制呢?当然有!那就是 YUM机制。
RHEL先将发布的软件存放到 YUM服务器内,然后分析这些软件的依赖属性问题,将软件内的记录信息写下来 (header)。然后再将这些信息分析后记录成软件相关性的清单列表。这些列表数据与软件所在的位置叫容器 (repository)。当用户端有软件安装的需求时,用户端主机会主动地向网络上面的YUM服务器的容器网址下载清单列表,然后通过清单列表的数据与本机 RPM数据库已存在的软件数据相比较,就能够安装所有需要的具有依赖属性的软件。