RPM文件在Linux系統中的安裝最爲比較便捷而且常用
RPM主要功能
安裝、卸載、升級和管理軟件
組件查詢功能
驗證功能
軟件包GPG和MD5數字簽名的導入、驗證和發佈
軟件包依賴處理
選擇安裝
rpm 命令:遵循GPL協議且功能強大的包管理,它可以建立、安裝、請求、確認、和卸載軟件包。間接的提升了Linux 的易用性
-e 卸載rpm包
-q 查詢已安裝的軟件信息
-i 安裝rpm包
-u 升級rpm包
--replacepkgs 重新安裝rpm包
--justdb 升級數據庫,不修改文件系統
--percent 在軟件包安裝時輸出百分比
--help 幫助
--version 顯示版本信息
-c 顯示所有配置文件
-d 顯示所有文檔文件
-h 顯示安裝進度
-l 列出軟件包中的文件
-a 顯示出文件狀態
-p 查詢/校驗一個軟件包文件
-v 顯示詳細的處理信息
--dump 顯示基本文件信息
--nomd5 不驗證文件的md5支持
--nofiles 不驗證軟件包中的文件
--nodeps 不驗證軟件包的依賴關係
--whatrequire 查詢/驗證需要一個依賴性的軟件包
--whatprovides 查詢/驗證提供一個依賴性的軟件包
案列:
--test:不執行真正的安裝過程,而僅測試
如下圖如果不帶--nodeps選項將無法安裝
帶—nodeps選項後安裝執行結果
覆蓋安裝:重新安裝並覆蓋原有的文件
--replacepkgs
安裝程序會檢查系統,如果安裝過的程序不會執行安裝
--replacepkgs 覆蓋安裝
升級:
rpm {-U|--upgrade}[install-options] PACKAGE_FILE ...
-U :升級或安裝
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
-F:升級
常用組合:-Uvh,-Fvh
--test:測試安裝
--nodeps:忽略依賴關係
--force:忽略衝突,強制安裝
--oldpackage:降級到舊版本;
注意:一定不要對內核執行升級;linux允許多內核共存,所有,可以直接安裝多個不同版本內核;
注意:如果程序包的配置文件安裝後曾被修改,升級時,新版本的文件不會覆蓋老版本的配置而是把新版本的配置文件重命名爲(.rpmnew)後保存
例如原系統上已經安裝過zsh-4.3.10-7.el6.x86_64版本直接執行zsh-4.3.10-9.el6.x86_64.rpm的安裝程序後在查看版本依舊還是zsh-4.3.10-7.el6.x86_64
使用rpm -Uvh zsh-4.3.10-9.el6.x86_64.rpm命令升級成功
降級操作示例:
卸載:
移除已經安裝的程序包
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers][--test] PACKAGE_NAME ...
簡單用法: rpm -e PACKAGE_NAME....
--allmatches:如果一個程序包同時安裝多個版本,則此選項一次全部卸載之;
--nodeps:忽略依賴關係;
--test: 測試卸載;dry-rum模式;
注意:如果程序包的配置文件安裝後曾被修改,卸載時,此文件通常不會被刪除,而是被重命名加後綴(.rpmsave)
查詢:
查詢某包是否已經安裝,以及檢查安裝的所有包,還可以查看某包的詳細信息;
rpm {-q|--query} [select-options][query-options]
[select-options]
1、查詢某包或某些包是否安裝;
rpm -q PACKAGE_NMAE./
2、查詢已經安裝的所有包;
rpm -qa
3、查詢某文件是由哪個包安裝生成;
rpm -qf /PATH/TO/SOMEFILE
4、查詢尚未安裝的包文件的相關信息
-p
rpm -qpi PACKAGE_FILE 查詢爲安裝的程序信息
rpm -qpl PACKAGE_FILE 查詢爲安裝程序將生成哪些路徑
[query-options]
1、查詢某包的簡要說明信息
rpm -qi PACKAGE_NAME
2、查詢某包安裝所生成的文件列表;
rpm -ql PACKAGE_NAME
3、查詢某包安裝完成後所生成的所有配置文件;
rpm -qc zsh
4、查詢幫助文檔信息
rpm -qd PACKAGE_NAME
5、查看某包製作時隨版本變化的changelog信息;
rpm -q --changelog PACKAGE_NAME
6、查詢某包提供的capabilities:
rpm -q --provides PACKAGE_NAME
7、查詢某包所依賴的Capabilities;
rpm -q --requires PACKAGE_NAME
8、查詢某包安裝或卸載時執行腳本;
rpm -q --scripts PACKAGE_NAME
腳本有四類;
preinstall:安裝過程開始之前執行的腳本;
postinstall:安裝過程完成之後執行的腳本;
preuninstall: 卸載執行之前開始執行的腳本;
postuninstall: 卸載過程完成之後執行腳本;
校驗:
查詢包安裝之後生成的文件是否發生了改變
rpm{-V|--verify} [select-options] [verify-options]
常見用法:rpm -v PACKAGE_NAME
S file Size differs
M Mode differs (includes permissions and file type)
5 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 --import /path/to/RPM-GPS-KEY-centos-6
使用rpm –K 驗證
rpm管理器數據庫:/var/lib/rpm
重建數據庫:
rpm{--initdb|--rebuilddb}
--initdb: 初始化數據庫,即數據庫完全不存在時,可新建之;
--rebuilddb:無論當前數據存在與否,都會直接重建此庫;