CentOS系統上程序rpm包管理:
安裝、升級、卸載、查詢、檢驗
通過rpm命令完成
安裝:
rpm {-i|--install} [install-options] PACKAGE_FILE1...
-h: hash,以#來表示安裝進度;
-v, --verbose:顯示安裝過程中的詳細信息;
-vv:
-vvv:
安裝時常用的組合: -ivh, -ivvh
--test:不執行真正的安裝過程,而僅報告依賴關係及衝突信息等;
程序包之間存在依賴關係:
由衆多目的單一的小程序組成;結果程序包之間存在相關性;
X --> Y
X --> Y --> (M,N) --> ...
X <--> Y
忽略依賴關係:
副作用:能安裝成功,但未必能成功運行;
--nodeps
覆蓋安裝:重新安裝並覆蓋原有的文件
--replacepkgs
強制安裝:
--force
升級:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
-U: 升級或安裝
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
-F:升級
組合:-Uvh, -Fvh
--test
--nodeps
--force
--oldpackage:降級到舊版本;
注意:一定不要對內核執行升級;Linux允許多內核共存,所以,可以直接安裝多個不同版本內核;
注意:如果程序包的配置文件安裝後曾被修改,升級時,新版本的文件不會覆蓋老版本的配置文件,而把新版本的配置文件重命名(加後綴.rpmnew)後保存;
卸載:
移除已經安裝的程序包
rpm {-e|--erase} [--allmatches] [--nodeps] [--test] PACKAGE_NAME ...
簡單用法:rpm -e PACKAGE_NAME...
--nodeps:忽略依賴關係;
--test: 測試卸載;dry-run模式;
--allmatches: 如果一個程序包同時安裝多個版本,則此選項一次全部卸載之;
注意:如果程序包的配置文件安裝後曾被修改,卸載時,此文件通常不會被刪除,而是被重命名(加後綴.rpmsave)後留存;
查詢:
查詢某包是否已經安裝,以及檢查安裝的所有包;還可以查看某包的詳細信息;
rpm {-q|--query} [select-options] [query-options]
[select-options]:
1、查詢某包或某些包是否安裝:
rpm -q PACKAGE_NAME...
2、查詢已經安裝的所有包:
rpm -qa
3、查詢某文件是由哪個包安裝生成:
rpm -qf /PATH/TO/SOMEFILE
4、查詢尚未安裝的包文件的相關信息
-p
# rpm -qpi PACKAGE_FILE
[query-options]:
1、查詢某包的簡要說明信息:
rpm -qi PACKAGE_NAME
2、查詢某包安裝生成的文件列表:
rpm -ql PACKAGE_NAME
3、查詢某包安裝完成後生成的所有配置文件:
rpm -qc PACKAGE_NAME
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-GPG-KEY-FILE
例如:# rpm --import RPM-GPG-KEY-CentOS-6
驗正:rpm {-K|--checksig} PACKAGE_FILE
--nosignature: 不檢查來源合法性
--nodigest: 不檢查完整性
rpm管理器數據庫:/var/lib/rpm
重建數據庫:
rpm {--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY]
--initdb: 初始化數據庫,即數據庫完全不存時,可新建之;
--rebuilddb: 無論當前數據存在與否,都會直接重建此庫;