1. 程式人生 > >RPM命令詳解(安裝、解除安裝、升級)

RPM命令詳解(安裝、解除安裝、升級)

零、rpm 常用命令

1.安裝一個包
# rpm -ivh

2.升級一個包
# rpm -Uvh

3.解除安裝一個包
# rpm -e

首先通過  rpm -q <關鍵字> 可以查詢到rpm包的名字,

   然後 呼叫 rpm -e <包的名字> 刪除特定rpm包。 

   如果遇到依賴,無法刪除,使用 rpm -e --nodeps <包的名字> 不檢查依賴,直接刪除rpm包。 

   如果恰好有多個包叫同樣的名字,使用 rpm -e --allmatches --nodeps <包的名字> 刪除所有相同名字的包, 並忽略依賴。

4.安裝引數
--force 即使覆蓋屬於其它包的檔案也強迫安裝
--nodeps 如果該RPM包的安裝依賴其它包,即使其它包沒裝,也強迫安裝。

5.查詢一個包是否被安裝
# rpm -q < rpm package name>

6.得到被安裝的包的資訊
# rpm -qi < rpm package name>

7.列出該包中有哪些檔案
# rpm -ql < rpm package name>

8.列出伺服器上的一個檔案屬於哪一個RPM包
#rpm -qf

9.可綜合好幾個引數一起用
# rpm -qil < rpm package name>

10.列出所有被安裝的rpm package
# rpm -qa

11.列出一個未被安裝進系統的RPM包檔案中包含有哪些檔案?
# rpm -qilp < rpm package name>

一、安裝


命令格式:

rpm -i ( or --install) options file1.rpm ... fileN.rpm

引數:

file1.rpm ... fileN.rpm 將要安裝的RPM包的檔名

詳細選項:

-h (or --hash) 安裝時輸出hash記號 (``#'')
--test 只對安裝進行測試,並不實際安裝。
--percent 以百分比的形式輸出安裝的進度。
--excludedocs 不安裝軟體包中的文件檔案
--includedocs 安裝文件
--replacepkgs 強制重新安裝已經安裝的軟體包
--replacefiles 替換屬於其它軟體包的檔案
--force 忽略軟體包及檔案的衝突
--noscripts 不執行預安裝和後安裝指令碼
--prefix 將軟體包安裝到由 指定的路徑下
--ignorearch 不校驗軟體包的結構
--ignoreos 不檢查軟體包執行的作業系統
--nodeps 不檢查依賴性關係
--ftpproxy 用 作為 FTP代理
--ftpport 指定FTP的埠號為

通用選項

-v 顯示附加資訊
-vv 顯示除錯資訊
--root 讓RPM將指定的路徑做為"根目錄",這樣預安裝程式和後安
裝程式都會安裝到這個目錄下
--rcfile 設定rpmrc檔案為
--dbpath 設定RPM 資料庫存所在的路徑為

二、刪除


命令格式:

rpm -e ( or --erase) options pkg1 ... pkgN

引數

pkg1 ... pkgN :要刪除的軟體包

詳細選項

--test 只執行刪除的測試
--noscripts 不執行預安裝和後安裝指令碼程式
--nodeps 不檢查依賴性

通用選項

-vv 顯示除錯資訊
--root 讓RPM將指定的路徑做為"根目錄",這樣預安裝程式和後安裝
程式都會安裝到這個目錄下
--rcfile 設定rpmrc檔案為

--dbpath 設定RPM 資料庫存所在的路徑為

三、升級


命令格式

rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm

引數

file1.rpm ... fileN.rpm 軟體包的名字

詳細選項

-h (or --hash) 安裝時輸出hash記號 (``#'')
--oldpackage 允許"升級"到一個老版本
--test 只進行升級測試
--excludedocs 不安裝軟體包中的文件檔案
--includedocs 安裝文件
--replacepkgs 強制重新安裝已經安裝的軟體包
--replacefiles 替換屬於其它軟體包的檔案
--force 忽略軟體包及檔案的衝突
--percent 以百分比的形式輸出安裝的進度。
--noscripts 不執行預安裝和後安裝指令碼
--prefix 將軟體包安裝到由 指定的路徑下
--ignorearch 不校驗軟體包的結構
--ignoreos 不檢查軟體包執行的作業系統
--nodeps 不檢查依賴性關係
--ftpproxy 用 作為 FTP代理
--ftpport 指定FTP的埠號為

通用選項

-v 顯示附加資訊
-vv 顯示除錯資訊
--root 讓RPM將指定的路徑做為"根目錄",這樣預安裝程式和後安裝程式都會安裝到這個目錄下
--rcfile 設定rpmrc檔案為
--dbpath 設定RPM 資料庫存所在的路徑為

四、查詢


命令格式:

rpm -q ( or --query) options

引數:

pkg1 ... pkgN :查詢已安裝的軟體包

詳細選項

-p (or ``-'') 查詢軟體包的檔案
-f 查詢屬於哪個軟體包
-a 查詢所有安裝的軟體包
--whatprovides 查詢提供了 功能的軟體包
-g 查詢屬於 組的軟體包
--whatrequires 查詢所有需要 功能的軟體包

資訊選項

顯示軟體包的全部標識
-i 顯示軟體包的概要資訊
-l 顯示軟體包中的檔案列表
-c 顯示配置檔案列表
-d 顯示文件檔案列表
-s 顯示軟體包中檔案列表並顯示每個檔案的狀態
--scripts 顯示安裝、解除安裝、校驗指令碼
--queryformat (or --qf) 以使用者指定的方式顯示查詢資訊
--dump 顯示每個檔案的所有已校驗資訊
--provides 顯示軟體包提供的功能
--requires (or -R) 顯示軟體包所需的功能

通用選項

-v 顯示附加資訊
-vv 顯示除錯資訊
--root 讓RPM將指定的路徑做為"根目錄",這樣預安裝程式和後安裝程式都會安裝到這個目錄下
--rcfile 設定rpmrc檔案為
--dbpath 設定RPM 資料庫存所在的路徑為

五、校驗已安裝的軟體包


命令格式:

rpm -V ( or --verify, or -y) options

引數

pkg1 ... pkgN 將要校驗的軟體包名

軟體包選項

-p Verify against package file
-f 校驗所屬的軟體包
-a Verify 校驗所有的軟體包
-g 校驗所有屬於組 的軟體包

詳細選項

--noscripts 不執行校驗指令碼
--nodeps 不校驗依賴性
--nofiles 不校驗檔案屬性

通用選項

-v 顯示附加資訊
-vv 顯示除錯資訊
--root 讓RPM將指定的路徑做為"根目錄",這樣預安裝程式和後安裝程式都會安裝到這個目錄下
--rcfile 設定rpmrc檔案為
--dbpath 設定RPM 資料庫存所在的路徑為

六、校驗軟體包中的檔案


語法:

rpm -K ( or --checksig) options file1.rpm ... fileN.rpm

引數:

file1.rpm ... fileN.rpm 軟體包的檔名

Checksig--詳細選項

--nopgp 不校驗PGP簽名

通用選項

-v 顯示附加資訊
-vv 顯示除錯資訊
--rcfile 設定rpmrc檔案為


七、其它RPM選項


--rebuilddb 重建RPM資料庫
--initdb 建立一個新的RPM資料庫
--quiet 儘可能的減少輸出
--help 顯示幫助檔案

--version 顯示RPM的當前版本

八、修復rpm資料庫

      有的時候,我們的rpm的資料庫會因為某些原因損壞,這樣當你執行rpm的相關命令的時候就會報類似下面的錯誤:

rpmdb: fatal region error detected; run recovery
error: db4 error(-30982) from dbenv->open: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index

      這樣的後果是你將不能使用rpm來新增刪除,更新查詢你係統的RPM軟體包了,其實只要按照下面的步驟做就可以恢復您的RPM資料庫而不需要重新安裝系統

# cd /var/lib
# mv rpm rpm.old
# mkdir rpm
# rpmdb --initdb
# cp rpm.old/Packages rpm
# rpmdb --rebuilddb

      就可以了
      以上是針對redhat8 和redhat9的做法如果是以前的版本或者其他版本的linux
      請按照下面的步驟進行

# cd /var/lib
# mv rpm rpm.old
# mkdir rpm
# rpm --initdb
# cp rpm.old/Packages rpm
# rpm --rebuilddb

另一篇

Repair RPM database

      當進行包安裝、升級、解除安裝等操作時,可能損壞RPM DB,這時需要通過--rebuild引數來修復RPM DB,但有時會碰到這樣的問題:

[[email protected] lib]# rpm -v --rebuilddb
rpmdb: fatal region error detected; run recovery
error: db4 error(-30982) from dbenv->open: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index

這時需要先手動刪除/var/lib/rpm目錄下的 __db.* 檔案,比如 __db.001, __db.002, etc.
然後再執行 rpm -v --rebuilddb 即可。

如果有幫助,請點選推薦給更多需要的人
推薦