在 RedHat 系 Linux 中,RPM 與 YUM 是軟體管理的雙核心。雖然同屬包管理體系,但兩者定位、能力與適用場景截然不同。本文從底層原理到實戰操作,徹底釐清兩者關係與差異。

| 維度 | RPM (RPM Package Manager) | YUM (Yellowdog Updater Modified) |
|---|---|---|
| 層級 | 底層包格式與操作工具 | 高層包管理器(前端) |
| 依賴處理 | 手動解決,極易陷入「依賴地獄」 | 自動解析、下載、安裝所有依賴 |
| 倉庫來源 | 本地 .rpm 文件 | 遠端/本地軟體倉庫 |
| 適用場景 | 單包安裝、離線環境、精準版本控制 | 日常維护、批量部署、系統升級 |
| 操作對象 | .rpm 文件 | 包名稱(自動從倉庫獲取) |
# 安裝/升級/移除
rpm -ivh package.rpm # 安裝(-v 顯示進度 -h 哈希條)
rpm -Uvh package.rpm # 升級或安裝
rpm -e package_name # 移除(操作包名,非文件名)
# 查詢與驗證
rpm -qa | grep kernel # 查詢已安裝包
rpm -qpl package.rpm # 列出包內文件
rpm -qpi package.rpm # 顯示包元數據
rpm -qf /etc/nginx/nginx.conf # 反查文件屬於哪個包
rpm -Va # 校驗所有包完整性(檢測被竄改文件)
# 倉庫管理
yum repolist all # 列出所有倉庫狀態
yum clean all # 清理快取
yum makecache # 重建快取
# 軟體操作
yum install nginx # 自動解決依賴並安裝
yum update # 系統整體升級
yum update nginx # 單包升級
yum remove nginx # 移除包及無用依賴
# 進階查詢
yum provides */nginx.conf # 反查文件屬於哪個包(未安裝也可查)
yum list installed # 列出已安裝包
yum info nginx # 顯示包詳細信息
yum history # 查看操作歷史(支援回滾)
假設安裝 httpd 需要 apr、apr-util、pcre 等十幾個依賴包,且它們又有各自的依賴。使用 RPM 時,管理員必須手動按拓撲順序下載並安裝每個包,任何版本不匹配都會導致安裝失敗。YUM 通過解析倉庫中的 repodata 元數據,自動構建依賴圖,一次性完成下載、驗證、安裝全流程。
yum localinstall package.rpm 可讓 YUM 解決本地 RPM 的依賴。priority 插件避免版本衝突。RPM 是「引擎」,YUM 是「導航+自動駕駛」。理解兩者分工,能讓 Linux 軟體生命週期管理從繁瑣的手工作業,進化為可控、可審計、可自動化的工程化流程。