RPM(RedHat Package Manager)是紅帽系 Linux 軟件分發核心格式。本文系統整理安裝/升級/卸載參數、查詢文件/信息/依賴、源碼包編譯、文件提取、數據庫操作等實戰技巧,附帶常見報錯處理方案。
基礎操作速查
| 操作 | 命令 | 關鍵參數 |
| 安裝 | rpm -i pkg.rpm | --force 強制、--nodeps 忽略依賴 |
| 升級 | rpm -U pkg.rpm | 不存在則安裝 |
| 卸載 | rpm -e pkg_name | --nodeps 強制卸載 |
| 查詢已安裝 | rpm -q pkg | -a 所有、-i 信息、-l 文件列表 |
| 查詢未安裝包 | rpm -qp pkg.rpm | -i 信息、-l 文件列表、-p 指定包文件 |
進階查詢技巧
- 查找命令所屬包:
rpm -qf $(which cmd)
- 查找文件所屬包:
rpm -qf /path/to/file
- 查看包依賴:
rpm -qpR pkg.rpm
- 查看包腳本:
rpm -qp --scripts pkg.rpm
- 驗證包完整性:
rpm -V pkg
源碼包編譯安裝兩種方法
- 標準編譯:
rpm -i pkg.src.rpm
cd /usr/src/redhat/SPECS
rpmbuild -bp pkg.spec
cd /usr/src/redhat/BUILD/pkg/
./configure && make && make install
- 生成二進制包再安裝:
rpmbuild -bb pkg.spec
# 生成的 RPM 在 /usr/src/redhat/RPMS/arch/
rpm -i new_pkg.rpm
不安裝提取包內文件
rpm2cpio pkg.rpm | cpio -idmv
# -i 提取、-d 創建目錄、-m 保持修改時間、-v 顯示進度
常見報錯處理
| 錯誤 | 原因 | 解決 |
| conflict with | 文件衝突 | --force 強制安裝 |
| is needed by | 依賴缺失 | --nodeps 忽略依賴 / 先安裝依賴包 |
| is needed by (卸載時) | 被其他包依賴 | --nodeps 強制卸載(謹慎) |
RPM 數據庫維護
# 重建數據庫
rpm --rebuilddb
# 查詢數據庫統計
rpm -qa | wc -l