YUM 可以通过加入第三方的安装源来安装一些软件包,本文安装的 RPMForge 就是这样一个例子。这就带来一个问题,如果第三方的安装源里有些软件包比 CentOS 本身预装的对应软件包版本要新的话,就会自动安装较新的版本来代替 CentOS 预装的软件版本,如果盲目地更新进行升级,可能是草率和不明智的,这有可能带来一些潜在的安全和管理问题。
于是,YUM 引入了一种机制,就是依靠“优先权”来对下载源的优先级进行排队。这个是靠 yum-priorities 插件来实现的。而要应用这个特性,需要安装这个插件并配置使其起作用,并在 repo 配置里加入priority=N 来定义优先级别,这个整数数字(1~99)越小,优先级越高。这样一来,如果不同的下载源有软件包重叠,优先级高的就被保护,而优先级低的就被排除 (excluded),不会被检测(check)到也不会被更新(update)。如果优先级较低的安装源中的软件包,比优先级较高的安装源中的软件包的版本还低,会是什么情形呢?自然更是没商量,被排除掉了。就是说,软件包更新时,先考虑优先级,再考虑软件的版本。
用于 CentOS 5 安装源的yum-priorities 软件包:
yum install yum-priorities #安装 YUM 优先权插件,生成 /etc/yum/pluginconf.d/priorities.conf 文件,在 CentOS 5 中,插件默认是可用的。
vi /etc/yum/pluginconf.d/priorities.conf
[main]
enabled=1 (默认)
编辑 /etc/yum.repos.d/ 路径下的 .repo 文件,通过添加以下文本行来创建 priorities:
priority=N
对应于每个安装源入口,N 是一个从 1 到 99 的整数。
建议的配置是(CentOS-Base.repo文件):
[base], [addons], [updates], [extras] ... priority=1
[centosplus], [contrib] ... priority=2对第三方安装源,比如 rpmforge(rpmforge.repo文件)等等,priority=N (N 是一个大于 10 的你喜欢的整数)
用一下命令进行测试:yum check-update
它将输出类似以下两行信息:
Loading "priorities" plugin
...
76 packages excluded due to repository priority protections
在你的 CentOS 系统中,上面的数字可能不同,但是它表明有一些包被排除在外了。
“优先权”对 check-update、update 和 list 等所有 YUM 子命令都起作用。经过优先级比较和过滤后,所有没有安装的、优先级较高的新软件包仍然可以用:yum install <软件包名> 命令来安装。
定义的安装源较多时,可以使用: yum --disablerepo=* --enablerepo=<安装源> <命令> 来对安装源进行选择。