在 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 分析依賴關系。