首頁 > 軟體

Linux rpm包管理詳解

2020-06-16 17:09:14

RPM 軟體包管理器,原名為Red Hat Package Manager,是Linux系統最為常見和基礎的軟體包管理工具,RPM是以一種資料庫記錄的方式將已經安裝的封包進行記錄,為RPM軟體包管理及後續yum軟體包管理提供資料庫依據,因此專案實施過程中,要定時備份RPM資料庫,一旦資料庫破壞,封包在安裝過程中無法查詢依據。

RPM管理功能有,軟體包的查詢、軟體包的確認、軟體包的資訊查詢、軟體包的解除安裝和軟體包的更新多種用法。

RPM的查詢選項用法較為複雜,特別是p選項,指定未安裝的包,引數要跟完整的rpm包名,因為指定未安裝的封包時,要在指定路徑下(如某光碟映象中的Package中)找完整的rpm包。不加p時,只需指明普通報名即可,因為在安裝過程中,資料庫儲存時會把普通報名存為一列。

其他選項如下所示:

功能

選項

含義

q

a

Query all installed  packages.

f

Query package owning FILE.

g

Query packages with the  group of GROUP.

p

Query  an  (uninstalled)  package   PACKAGE_FILE

i

Display package information,

l

List files in package.

c

List only configuration  files

--scripts

List the package specific  scriptlet(s)

Qa

查詢所有安裝過的封包

Qf

查詢子模組屬於哪個封包安裝的

Ql

查詢封包中安裝路徑及內容

Qpi

查詢為安裝包的資訊,如版本號、描述資訊等,P指定未安裝的

Qc

查詢封包

-q –scritps

+包名,可查詢已經安裝的包的scripts指令碼

-qp –scripts

+完整的rpm包名,可查詢尚未安裝的包的scripts指令碼

[root@CentOS7 ~]#rpm -q --scripts httpd  #僅僅為q時,無需加完整的包明
preinstall scriptlet (using  /bin/sh):
# Add the "apache"  group and user
/usr/sbin/groupadd -g 48 -r  apache 2> /dev/null || :
/usr/sbin/useradd -c  "Apache" -u 48 -g 48
    -s /sbin/nologin -r -d /usr/share/httpd apache 2> /dev/null  || :
postinstall scriptlet (using  /bin/sh):
…………
############################################################################
[root@centos7 ~]#rpm -qp –scripts  /media/Packages/httpd-2.4.6-40.el7.centos.x86_64.rpm                          #P查詢未按照的完整包名
warning:  /media/Packages/httpd-2.4.6-40.el7.centos.x86_64.rpm: Header V3 RSA/SHA256  Signature, key ID f4a80eb5: NOKEY
preinstall scriptlet (using  /bin/sh):
# Add the "apache"  user
/usr/sbin/useradd -c  "Apache" -u 48
    -s /sbin/nologin -r -d /usr/share/httpd apache 2> /dev/null  || :
postinstall scriptlet (using  /bin/sh):
…………
############################################################################
[root@centos7 ~]#rpm -qf  /lib64/libxtables.so.10.0.0 #查詢模組屬於哪個封包
iptables-1.4.21-16.el7.x86_64

PRM軟體包的安裝,在RPM軟體包的安裝過程中,同樣會用到眾多引數。
具體用法如下所示:

功能

選項

含義

i

V

Print verbose information

H

用#(hash)符顯示rpm安裝過程

--force

強制安裝封包

--nodeps

安裝封包不檢查依賴性

--noscripts

安裝封包不執行封包中指令碼

--test

測試安裝是否成功

--prefix

指定路徑安裝

[root@centos7 ~]#rpm -ivh  /media/Packages/psmisc-22.20-9.el7.x86_64.rpm
warning:  /media/Packages/psmisc-22.20-9.el7.x86_64.rpm: Header V3 RSA/SHA256  Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
  1:psmisc-22.20-9.el7              #################################  [100%]

RPM軟體包的解除安裝,在RPM軟體包的解除安裝過程中,可以單獨解除安裝某一個包,而不解除安裝相關依賴包,一個包有可能被多個包同時依賴,因此在解除安裝某個RPM包時,有可能提現無法解除安裝,故通過強行解除安裝而不檢查依賴關係進行解除安裝。
具體用法如下:

功能

選項

含義

e

--nodeps

解除安裝不檢查依賴關係

--noscripts

解除安裝不執行指令碼

--test

解除安裝測試是否能夠完成

[root@centos7 ~]#rpm -e  psmisc
[root@centos7 ~]#rpm -qi  psmisc
package psmisc is not  installed

在rpm的安裝過程中會自動在目錄/var/lib/rpm中建立rpm的資料庫,不管在安裝rpm包之前或在解除安裝rpm包之前都會查詢rpm資料庫,檢查是否已安裝。如果意外刪除rpm資料庫,即使通過rpm –initdb 或 rpm –rebuilddb 重構資料庫也無法找回系統之前安裝的rpm包,會導致無法解除安裝rpm包或者重複安裝rpm封包,因此建議系統定時備份rpm資料庫。

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-08/146464.htm


IT145.com E-mail:sddin#qq.com