在Linux系統操作中,常見的軟件包管理系統有RPM和YUM,使用它們能夠對Linux系統進行管理,今天小編要給大家介紹的是CentOS系統中RPM軟件包的管理,感興趣的朋友可以來了解下。
在Linux發行版中,幾乎每一個發行版都有自己的軟件包管理系統。常見的有deb軟件包的dpkg以及它的前端apt(適用於debian、Ubuntu等)。rpm以及它的前端yum(適用於RedHat系列的系統)。
RPM,全稱RPM Package Manager,是由Red Hat推出的軟件包管理系統,現在在各種發行版中普遍適用。
RRM軟件包是將程序源代碼經過編譯和封裝以後形成的包文件,在軟件包裡面會封裝軟件的二進制程序、配置文件、幫助手冊、庫文件以及頭文件等。RPM包的結構如下圖所示:
RPM軟件包的安裝與卸載:
# rpm [options] /path/to/rpmfile
option:
-i|--install:安裝指定軟件
-v|--verbose:顯示安裝過程
-e|--erase:卸載指定的軟件
-h|--hash:以#的方式顯示安裝進度條,一個#為2%
--nodeps:忽略依賴關系
--test:測試安裝
-U:升級+安裝(如果之前有安裝則升級,如果之前沒有安裝則安裝)
-F:升級(如果之前有安裝則升級,如果之前沒安裝則不做任何操作)
--replacepkgs:重新安裝軟件包
--force:在軟件包的安裝或升級過程中,如果出現某個文件已經安裝或者某一個軟件已經安裝時
可以使用--force選項強制安裝,等同於--replacepkgs --replacefiles --oldpackage同時使用
常用的軟件包安裝選項為:
#rpm -ivh /path/to/rpmfile
# rpm -Uvh /path/to/rpmfile
示例 1:
RPM軟件包驗證:
RPM包使用gpg非對稱加密機制,可以驗證包的完整性和來源的合法性。
# rpm --import PUBKEY:rpm使用--import導入軟件包提供者制作的公鑰,可以自動進行軟件包的驗證
#rpm {-K|--checksig} [--nosignature] [--nodigest] PACKAGE_FILE:rpm可以使用-K或--checksig選項對軟件包進行來源和完整性的驗證,--nosignature選項是指不進行來源合法性驗證,--nodigest選項是指不進行完整性驗證
示例 2:
RPM查詢:
# rpm {-q|--query} [select-options] [query-options] [PACKAGE_NAME|PACKAGE_FILE]
常用select-option:
-a|--all:將已安裝的所有包顯示在屏幕上(Query all installed packages )
# rpm -qa
-f|--file FILE:根據指定的文件顯示出該文件由哪一個包生成(Query package owning FILE)
-p|--package PACKAGE_FILE:根據指定的軟件包文件,搭配query-option選項可查詢未安裝的包信息。
常用query-option:
-l|--list:列出該軟件包安裝後需要生成的所有文件( List files in package)
-i|--info:顯示軟件包的信息,包括名稱、版本和描述
(Display package information, including name, version and description)
-c|--configfiles:僅顯示-l選項列出文件中的配置文件(List only configuration files (implies -l))
-d|--docfiles:僅顯示-l選項列出文件中的文檔或幫助手冊(List only documentation files (implies -l))
--scripts:顯示該軟件包在安裝或卸載前後需要運行的腳本
(List the package specific scriptlet(s) that are used as part of the installation and uninstallation
processes)
示例 3:
RPM校驗:
RPM還提供了對軟件包生成的文件進行校驗的功能(可針對文件大小、權限、MD5、修改時間等進行校驗),當沒有任何改變時候,顯示9個‘-’,如果某一項發生改變則在相應位顯示標識符,各標識符代表含義如下:
S文件大小發送改變(file Size differs)
M文件權限發生改變(Mode differs (includes permissions and file type))
5文件MD5值發送改變(digest (formerly MD5 sum) differs)
D裝置的主/次代碼發生改變(Device major/minor number mismatch)
L 路徑發生改變(readLink(2) path mismatch)
U屬主發生改變(User ownership differs)
G屬組發生改變(Group ownership differs)
T修改時間發生改變(mTime differs)
P能力發生改變(caPabilities differ)
# rpm {-V|--verify} PAKCAGE_NAME
示例 4:
備注:這個是我在/etc/lftp.conf文件末尾新增了一行後的校驗結果
RPM包數據庫:
RPM軟件包有一個本地的數據庫(在/var/lib/rpm目錄下),RPM包的安裝、升級和刪除都會更新數據庫的信息。但是當數據庫損壞之後,軟件包的更新卸載就會出現錯誤。現在只需要將數據庫重建就可以解決問題,如下圖所示:
示例 5:
上面就是CentOS系統中RPM軟件包管理的介紹了,包括RPM軟件包的安裝、卸載、校檢、數據庫都做了詳細介紹,以便你對RPM軟件包的管理有更詳細的了解。