Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

RPM 套件管理精要:安裝、升級、查詢、驗證、資料庫重建全攻略

編輯:Linux 系統常見問題解答

RPM(Red Hat Package Manager)是 Red Hat 系發行版的基石。掌握 rpm 底層指令,能在 YUM/DNF 失效、離線環境、精確版本控制場景下遊刃有餘。本文系統整理五大操作類別、常用參數、資料庫維護與 SRPM/YUM 演進脈絡。

五大核心操作

操作指令模板關鍵參數
安裝rpm -ivh pkg.rpm--test 試裝、--replacepkgs 重裝、--force 強制、--nodeps 忽略依賴
升級rpm -Uvh pkg.rpm-F 僅升級已裝、--oldpackage 降級、--test 試升級
移除rpm -e pkg-name--allmatches 全刪、--nodeps 忽略依賴、--test 試移除
查詢rpm -q ...-a 全部、-f file 反查、-i 資訊、-l 檔案列表、-c 設定檔、--scripts 腳本
驗證rpm -V pkg-name輸出 8 字元狀態碼(S M 5 D L U G T),--import 驗簽

驗證輸出碼解讀(rpm -V)

S.M5DLUGT  c /etc/httpd/conf/httpd.conf
||||||||
|||||||+-- T: mTime 修改時間變更
||||||+--- G: Group 群組變更
|||||+---- U: User 擁有者變更
||||+----- L: symLink 符號連結目標變更
|||+------ D: Device 設備檔案屬性變更
||+------- 5: MD5 雜湊值變更(內容被修改)
|+-------- M: Mode 權限位變更
+--------- S: Size 大小變更
c = 設定檔

實戰場景範例

# 1. 離線安裝(已下載 rpm 及依賴)
rpm -ivh --nodeps *.rpm  # 忽略依賴順序,最後再 rpm -e --nodeps 清理失敗包

# 2. 查詢某檔案屬於哪個套件
rpm -qf /usr/sbin/nginx
# nginx-1.24.0-1.el7.ngx.x86_64

# 3. 列出套件安裝的所有設定檔
rpm -qc nginx | head
# /etc/nginx/nginx.conf
# /etc/nginx/fastcgi_params
# /etc/logrotate.d/nginx

# 4. 驗證系統關鍵檔案是否被竄改
rpm -Va | grep -E '^..5' | head -20
# 找出 MD5 變更的檔案(潛在入侵徵兆)

# 5. 重建 RPM 資料庫(索引損壞、掛起)
rpm --rebuilddb
# 或初始化(慎用,會清空)
rpm --initdb

RPM 檔案命名規範

nginx-1.24.0-1.el7.ngx.x86_64.rpm
│     │       │  │  │    │
│     │       │  │  │    └─ 架構
│     │       │  │  └───── 發布商/倉庫標識
│     │       │  └──────── 釋出版本
│     │       └─────────── 套件版本
│     └─────────────────── 套件名稱
└───────────────────────── 可選:epoch

SRPM:原始碼套件

  • 副檔名 .src.rpm
  • 含 spec 檔、原始碼 tarball、patch
  • 用途:自訂編譯參數、回滾補丁、跨架構構建
  • 構建流程:rpmbuild --rebuild pkg.src.rpm → 產出 ~/rpmbuild/RPMS/ 下的二進制 rpm

YUM/DNF:RPM 的前端演進

特性YUM (v3)DNF (v4)
依賴解析器Python 2、較慢libsolv (C++)、快 10 倍
模組化支援無dnf module(AppStream)
API 穩定性成熟現代化、支援插件
相容指令yumdnf(兼容 yum 別名)

最佳實踐清單

  • ✅ 線上環境**優先用 YUM/DNF**(自動解依賴、事務回滾、安全更新)
  • ✅ 精確版本鎖定:yum install nginx-1.24.0-1.el7.ngx 或 dnf versionlock add nginx
  • ✅ 離線部署:yumdownloader --resolve nginx 下載全依賴樹,配合 createrepo 建本地源
  • ✅ 定期 rpm --rebuilddb 維護索引健康
  • ✅ 審計關鍵檔案:rpm -Va > /var/log/rpm_verify_$(date +%F).log

結語: RPM 是「核武器」,YUM/DNF 是「導彈發射井」。日常用發射井,關鍵時刻(離線、降級、審計、重建)直接按核武器按鈕。熟練 rpm -qVa、--rebuilddb、SRPM rebuild,是資深運維的硬核基本功。

Copyright © Windows教程網 All Rights Reserved