2021-05-12 14:32:11
Linux rpm包管理詳解
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
相關文章