【Linux】RPM軟件管理程序


1 RPM簡介

RPM全稱爲RedHat Package Manager,是Red Hat這家公司開發出來的軟件管理程序,類似Windows系統下的程序與功能,實現程序的安裝、升級、卸載、查詢、校驗等功能。當然除了Redhat的RPM程序包管理器之外,還有debian的dpt、S.u.S.E的rpm、Gentoo的ports等。其中,程序包的安裝可以從下圖來簡單理解:

源代碼
目標二進制文件格式
組織成爲一個或有限幾個包文件

2 RPM包命名格式

RPM包格式:
name-VERSION-release.arch.rpm
比如:ftp-0.17-54.el6.x86_64.rpm
ftp:軟件名稱
0.17:軟件的版本號
54:軟件的編譯次數
x86:適合的硬件平臺
rpm:軟件包的擴展名


3 rpm命令

rpm類型的軟件管理工具爲rpm命令,可以用來安裝、升級、卸載、查詢、校驗rpm類型的軟件。


3.1 安裝

安裝:安裝時常用的選項組合爲-ivh,-ivvh

rpm {-i|install} [install-options] PACKAGE_FILE...
[install-options]:
	-h:hash,以#號表示安裝進度,每個#號代表2%的進度
	-v,--verbose:顯示安裝過程中的詳細信息
	-vv:顯示調試信息
	--test:不執行真正的安裝過程,而僅報告依賴關係及衝突信息等
	--nodeps:忽略依賴關係,副作用是能安裝成功,但未必能運行成功
	--replacepkgs:覆蓋安裝--重新安裝並覆蓋原有的文件
	--force:強制安裝	

3.2 升級

升級:升級時常用選項組和-Uvh,-Fvh

rpm {-U|--upgrade} [install-options] PACKAGE_FILE...
	-U:安裝或升級
rpm {-F|--freshen} [install-options] PACKAGE_FILE...
	-F:升級
	
[install-options]:
	--test:不執行真正的安裝過程,而僅報告依賴關係及衝突信息等
	--nodeps:忽略依賴關係,副作用是能安裝成功,但未必能運行成功
	--oldpackage:降級到舊版本

注意:
<1> 最好不要對內核執行升級,Linux允許多內核共存,可以直接安裝多個不同版本內核。
<2> 如果程序包的配置文件安裝後曾被修改,升級時,新版本的文件不會覆蓋老版本的配置文件,而把新版本的配置文件重命名(加後綴.rpmnew)後保存。


3.3 卸載

卸載:卸載已經安裝的包

rpm {-e|erase} [--allmatches] [--nodeps] [--test] PACKAGE_NAME...
	簡單用法:rpm -e PACKAGE_NAME
	--nodeps:忽略依賴關係
	--test:測試卸載,dry-run模式
	--allmatches:如果一個程序包同時安裝多個版本,則此選項一次全部卸載之

注意:如果程序包的配置文件安裝後曾被修改,卸載時,此文件通常不會被刪除,而是被重命名(加後綴,rpmsave)後保存


3.4 查詢

查詢:查詢某包是否已經安裝,以及檢查安裝所有的包,還可以查看某包的詳細信息

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:安裝過程完成之後執行的腳本
			preuntinstall:卸載開始之前執行的腳本
			postuninstall:卸載過程完成之後執行的腳本	

3.5 校驗

校驗:查詢包安裝之後生成的文件是否發生了改變
rpm {-V|--verify} [select-options] [verify-options]
常見用法:rpm -V PACKAGE_NAME

當沒有輸出結果時表示軟件包完整,當有相應的結果輸出表明對應的內容有修改,具體如下:

S:(file Size differs)文件的容量大小是否被改變
M:(Mode differs)文件的類型或文件的屬性(rwx)是否被改變,如是否可運行等參數已被改變
5:(MD5 sum differs)MD5這一種指紋碼的內容已經不同
D:(Device major/minor number mis-match)裝置的主/次代碼已經改變
L:(readLink(2) path mis-match)Link路徑已被改變
U:(User ownership differs)文件的所屬人已被改變
G:(Group ownership differs)文件的所屬羣組已被改變
T:(mTime differs)文件的創建時間已被改變
P:capabilities differ

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章