RPM 全名是“ RedHat Package Manager ”簡稱則為 RPM 顧名思義,當初這個軟件管理的機制是由 Red Hat 這家公司發展出來的。 RPM 是以一種數據庫記錄的方式來將你所需要的軟件安裝到你的 Linux 系統的一套管理機制。
但是安裝的時候必須具備的相依賴性(依賴關系)軟件,當安裝在你的 Linux 主機時, RPM 會先依照軟件里頭的數據查詢Linux 主機的相依賴性軟件是否滿足, 若滿足則予以安裝,若不滿足則不予安裝。為了解決這種具有依賴關系軟件之間的問題 ,RPM 就在提供打包的軟件時,同時加入一些訊息登錄的功能,這些訊息包括軟件的版本、 打包軟件者、相依賴關系的其他軟件、本軟件的功能說明、本軟件的所有文件記錄等等,然后在 Linux 系統上面亦創建一個 RPM 軟件數據庫,如此一來,當你要安裝某個以 RPM 型態提供的軟件時,在安裝的過程中, RPM 會去檢驗一下數據庫里面是否已經存在相關的軟件了, 如果數據庫顯示不存在,那么這個 RPM 文件“默認”就不能安裝。這個就是 RPM 類型的文件最為人所詬病的“軟件的依賴關系”問題。然而這種解決方法對用戶來說,并沒有什么卵用。所以就有了YUM的前端處理機制,將這些相依賴的軟件先列表, 在有要安裝軟件需求的時候,先到這個列表去找,同時與系統內已安裝的軟件相比較,沒安裝到的依賴軟件就一口氣同時安裝起來,就解決了相依屬性的問題。
rpm命令:rpm 選項 壓縮包
安裝:-i,–install
升級:-U,–update,-F,–freshen
卸載:-e,–erase
查詢: -q,–query
校驗; -V,–verify
數據庫維護:–builddb,–initdab
安裝:
rpm {-i|–install} [install-options] PACKAGE_FILE …
rpm -ivh package-file(一般情況下都用此格式安裝)
通用選項
-v:詳細信息
-vv:更詳細的輸出
[install-options]
-h:hash marks輸出進度條;每個#號表示2%的進度
–test:測試安裝,檢測并報告依賴關系及沖突消息等
–nodeps:忽略依賴關系(不保證可用性),不建議這么做
–replacepkgs:重新安裝
–justdb:
注意:rpm包可以自帶腳本;
四類:–noscripts
–nopre preinstall:安裝過程開始之前預習的腳本
–nopost postinstall:安裝過程完成那個之后運行的腳本
–nopreun prenuninstall:卸載過程真正開始執行之前運行的腳本
–nopostun postuninstall:卸載過程完成之后運行的腳本
–nosignature:不檢查包簽名信息,及不檢查來源合法性警告信息
–nodigest:不檢測包完整性信息
升級:
rpm -U –upgrade [install-options] package_file
rpm -F –freshen[install-options]package_file
-u:升級或者安裝
-F:升級
rpm -Uvh package_file
rpm -Fvh package_file
–oldpackage:降級;
–force:強制升級
注意: (1)不要對內核做升級操作;linux支持多內核版本并存,因此,直接安裝新版本內核;
(2)如果某原程序包的配置文件安裝后曾被修改過,升級時,新版本的程序提供的同一個配置文件不會覆蓋原版本的配置文件,而是把
新版本的配置文件重命名(filename.rpmnew)后保留
卸載:
rpm -e package_name
–allmatches:卸載所有匹配指定名稱的程序包的各版本
–nodeps:忽略依賴關系
–test:測試卸載,不真正執行
查詢:
rpm -q{–query}[select-options][query-options]
有兩類選項
[select-options]
package_name:查詢指定的程序包是否已經安裝,及其版本
-a,–all:查詢所有已經安裝過的所有包
-f file:查詢指定的文件由哪個程序包安裝生成
rpm -qf /etc/fstab;非常有用,可以查出文件是由哪個程序生成的
-p,–package PACKAGE_FILE:用于實現對未安裝過的程序包執行查詢操作;
–whatprivides CAPABILITY:查詢指定的CAPABILITY由哪個程序包提供;
–whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴
[query-options]
–changelog:查詢rpm包的changlog;
-l:列出程序安裝生成的所有文件列表
-i,–info:查詢程序包相關的信息,版本號,大小,所屬的包組,等;
rpm -qi 此命令用到很多
-c,–configfiles;查詢指定的程序提供的配置文件
-d,–docfiles:查詢指定的程序包提供的文檔;
–provides:列出指定的程序包提供的所有capabity(功能)
-R,–requires:查詢指定的程序包的依賴關系
–scripts:查看程序包自帶的腳本片段
用法:
-qi PACKAGE,-qf file ,-ql package,-qd package
-qpi package_file,-qpl package_file,-qpc package_file
校驗:
rpm {-V|–verify} [select-options] [verify-options]
校驗后如出現如下字符及表示發生變化;
S file Size differs(大小發生變化提示符)
M Mode differs (includes permissions and file type)(權限發生變化提示符)
5 digest (formerly MD5 sum) differs(MD5碼發生變化)
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(功能發生變化)
包來源合法性和完整性驗證;
來源合法性驗證:
數字簽名:
完整性驗證:
獲取并導入信任的包制作者的密鑰
對應centos發行版來說;rpm –import /etc/pki/rpm-/RPM-GRG-KEY-CENTOS-7gpgkey_file
(一般為/media/cdrom/RPM-GRG-KEY-CENTOS-7和/etc/pki/rpm-gpg)七系統
驗證:
1安裝此組織前簽名的程序時,會自動執行驗證;
2手動驗證:rpm -K PACKAGE_FILE
數據庫重建:
rpm管理器數據庫路徑/var/lib/rpm
查詢操作:通過此處的數據庫進行;
獲取幫助:
centos 6:man rpm
centos 7:man rpmdb
rpm{–initdb|–rebuilddb}
–initdb:初始化數據庫,當前無任何數據庫可初始化創建一個新的;當前有時不執行任何操作;
–rebuilddb:重新構建,通過讀取當前系統上所有已經安裝過的程序包進行重新創建;
原創文章,作者:M20-1馬星,如若轉載,請注明出處:http://www.www58058.com/37726
軟件包管理工具中rpm工具中的查詢選項是比較常用的,而yum倉庫的配置是一個基本技能,文章確實一筆帶過,未深入介紹。