rpm包管理基礎

  • 2019 年 10 月 5 日
  • 筆記

rpm 全稱RPM Package Manager

1.rpm包的查詢

常用的有:

rpm -qa             # 列出所有已安裝的rpm包

rpm -qi zsh       # 查詢zsh的具體資訊

rpm -qf /bin/ls# 查詢/bin/ls由哪個軟體包釋放的

rpm -qd zsh      # 查詢zsh提供哪些幫助文檔

rpm -qc zsh      # 查詢zsh的配置文件地址

rpm -ql zsh       # 查詢zsh安裝過程中釋放的文件路徑

不太常用的有:

rpm -q –changelog zsh    # 查詢zsh軟體包的變更記錄

rpm -q –requires zsh        # 查詢zsh依賴的其他軟體包

rpm -q –scripts zsh         # 查詢zsh 包含的腳本【安裝、卸載時候會調用這些腳本】

另外,加上 -p參數適用於尚未安裝的軟體包的資訊查詢,如:

【注意加上-p參數後,後面接的是必須是完整的包名稱】

rpm -qpi httpd-2.2.15-39.el6.centos.x86_64.rpm           # 查詢httpd軟體包的詳細資訊

同理,-qpc,-qpl,-qpd ,-qp –changelog 的用法類似,都是用於查詢尚未安裝的軟體包各種情況,可以參考上面。

2.rpm包的安裝

rpm -ivh xxx.rpm      安裝xxx軟體包

rpm -Uvh xxx.rpm    升級【存在則升級,不存在則本次安裝】

rpm -Fvh xxx.rpm     升級【存在則升級,不存在則本次也不安裝】

rpm -ivh –replacepkgs xxx.rpm        覆蓋安裝

rpm -ivh –oldpackage xxx.rpm         降級安裝rpm包

安裝過程中還有幾個可選參數,

–test

如rpm -ivh –test xxx.rpm        表示僅測試軟體包的安裝情況,不實際安裝

安裝過程中,如果我們沒有事先導入公鑰,安裝時候會提示缺少校驗或簽名。可以加上下面的選項:

–nodigest        # 讀取時不校驗打包或頭部校驗【如:rpm -ivh –nodigest xxx.rpm】

–nosignature   # 讀取時不校驗打包或頭部簽名

3.rpm包的卸載

rpm -e xxx         #  注意這裡xxx不需要寫具體的xxx.rpm。【卸載httpd.2.2.19.rpm,只要寫rpm -e httpd即可】

卸載過程中還有幾個可選參數,

–nodeps

如rpm -ivh –nodeps httpd.2.1.3-12.rpm 表示忽略依賴關係,不建議這樣使用。

–test

如rpm -ivh –test xxx.rpm        表示僅測試軟體包的安裝情況,不實際卸載

–noscripts        表示不執行rpm安裝過程的腳本,不建議使用該參數。

4.rpm包的校驗

校驗軟體包,是將已安裝的文件的資訊,與從軟體包中獲取的保存在 rpm 資料庫中的有關文件的元數據進行比較。校驗比較的內容有每個文件的大小,MD5 校驗和,許可,類型,屬主。任何不對的地方都回顯示出來。

rpm -V zsh        # 校驗zsh包【zsh已安裝情況下】

rpm -Va             # 校驗所有已安裝的軟體包的文件【md5】

rpm -Vf /bin/ls# 校驗/bin/ls文件【md5資訊】

校驗給出提示資訊有如下幾種:

c %config 配置文件

d %doc 文檔

g %ghost 佔位文檔 (就是說,文件內容不包含在軟體包有效內容裡面)

l %license 許可文件

r %readme 說明文件

S file Size 大小不一致

M Mode 模式不一致 (包括許可和文件類型)

5 MD5 sum 校驗和不一致

D Device 主從設備號不匹配

L readLink(2) 路徑不匹配

U User 屬主不一致

G Group 組屬主不一致

T mTime 時間不一致

例如下圖,對系統內已安裝的所有包文件進行校驗:

rpm包來源合法性校驗

一般用於對新下載好的軟體包進行校驗MD5值使用

rpm –import /PATH/FROM/GPG-PUBKEY-FILE

例如:rpm -K  zsh-4.3.10-7.el6.x86_64.rpm

提示如下,zsh-4.3.10-7.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

5.rpm資料庫重建

rpm –initdb               # 初始化rpm資料庫

rpm –rebuilddb        # 重新生成rpm資料庫

可能還有不完善的地方,待補充。