在 YUM(Yellowdog Updater Modified)包管理工具中,–obsoletes 和 --allowerasing 是两个与包升级 / 安装相关的选项,它们的功能和使用场景有明显区别:
1. --obsoletes(默认启用)
- 作用:处理「过时包」(obsolete packages)。当一个包被新版本替换,或被其他包取代时(例如包名变更但功能替代),YUM 会识别这种「过时关系」。
- 行为:在执行 yum update 或 yum install 时,若检测到某个已安装包被新包「过时」,会自动卸载旧的过时包,以避免冲突。
- 适用场景:主要用于包的正常升级流程,确保旧版本或被替代的包不会残留导致冲突。
- 注意:在现代 YUM 版本(如 RHEL 7+、CentOS 7+)中,–obsoletes 通常是默认启用的(可通过 yum.conf 中的 obsoletes=1 配置),无需手动指定。
"Obsoletes"是什么? "Obsoletes"是 RPM 软件包规范中定义的一种包关系(Package
Relationship)。当一个软件包在它的规格说明(spec file)中声明Obsoletes: some-old-package
时,意味着:
- 这个新包替代、并兼容了旧的
some-old-package
。- 安装这个新包时,应该移除旧的
some-old-package
。
2. --allowerasing
- 作用:允许 YUM 在解决依赖冲突时「主动卸载已安装的包」,即使这些包并非「过时包」。
- 行为:当安装 / 升级某个包时,如果存在依赖冲突(例如新包需要更低版本的依赖,或与现有包冲突),–allowerasing 会让 YUM 尝试卸载冲突的现有包,以满足新包的依赖需求。
- 适用场景:主要用于解决复杂的依赖冲突,例如跨版本升级、安装与现有包冲突的软件时。
- 注意:这是一个「更激进」的选项,可能会意外卸载一些用户需要的包,因此使用时需谨慎,建议先通过 yum deplist 或 yum check 分析依赖关系。