標籤:rpm 安裝包管理
概述:
因為一個應用程式是由很多檔案所組成,所以安裝卸載非常複雜,為了讓使用者更加方便的管理應用程式。所以引入了程式打包管理。主要包括:安裝,卸載,升級,查詢,檢驗。
常見的包管理器:
.deb: Debian研發
.rpm: Red Hat研發(Linux上的包管理器公用標準,故我學習的為rpm)
常見的CPU平台:(所以選擇應用程式安裝的時候,一定選擇和自己CPU所匹配的版本)
x86:i386, i486, i586, i686
x86_64: x86_64, amd64
分包機制:
核心包:主包,主要程式。
子包:為程式增加附加功能的包。
程式包擷取途徑:(務必在正規渠道獲得程式包)
1、系統的發行光碟片鏡像或官方網站(或鏡像伺服器)
推薦網站:
http://mirrors.sohu.com
http://mirros.163.com
http://mirros.aliyun.com
2、程式包的官方網站
3、可信任的第三方組織
4、程式包搜尋引擎
推薦網站:
http://rpmfind.net
http://rpm.pbone.net
---------------------------------------------------------
準備實驗環境:
1.準備CentOS6.6虛擬機器
2.掛載CentOS6.6系統光碟片DVD1
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5E/1C/wKiom1UpJ-eAnCRYAAB3H-ruDWU654.jpg" title="1.jpg" alt="wKiom1UpJ-eAnCRYAAB3H-ruDWU654.jpg" />
rpm命令:
安裝:(安裝新的程式包)
rpm -i [install-options] PACKAGE_FILE1 ...
-h:hash,以#號來表示安裝進度
-v:顯示安裝過程中的詳細資料
-vv:詳細
-vvv:更詳細
--test:不執行真正的安裝過程,而僅報告依賴關係及衝突資訊
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/5E/1C/wKiom1UpKsvA2r-MAADBndXvUUg148.jpg" title="2.jpg" alt="wKiom1UpKsvA2r-MAADBndXvUUg148.jpg" />
程式包之間是存在依賴關係的:因為程式包是由眾多目的單一的小程式組成,結果導致他們之間存在相關性,所以有時候安裝某個程式的時候,它會提示你缺少某些包。如下:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5E/1C/wKiom1UpLFSiJGMlAAEB27aMqBI531.jpg" title="3.jpg" alt="wKiom1UpLFSiJGMlAAEB27aMqBI531.jpg" />
--nodeps:忽略依賴關係(能安裝成功,但未必能運行)
--replacepkgs:覆蓋安裝(重新安裝,並覆蓋原有檔案)
--force:強制安裝
升級:(升級已經安裝的程式包)
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
-U:升級或安裝(若已安裝則升級,若未安裝則安裝)
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
-F:僅升級
-v,-h,--test,--nodeps,--force 常用選項用法同上
--oldpackage:降級到舊版本
注意:
1.一定不要對核心執行升級!
2.一般來說升級不會覆蓋使用者修改過的設定檔,新設定檔名會加尾碼(rpmnew)儲存
卸載:(移除已經安裝的程式包)
rpm {-e|--erase} [--allmatches] [--nodeps] [--test] PACKAGE_NAME ...
rpm -e PACKAGE_NAME... :卸載,簡單用法
--nodeps:忽略依賴關係
--test:卸載測試
--allmatches:若一個程式包安裝有多個版本,則卸載所有版本
注意:若程式包設定檔曾被修改,卸載時,設定檔不會刪除,會加尾碼(rpmsave)儲存
查詢:(查詢某包是否安裝,以及檢查安裝的所有包,查看某包資訊)
rpm {-q|--query} [select-options] [query-options] PACKAGE_NAME ...
[select-options]:
1.查詢某包或某些包是否安裝
rpm -q PACKAGE_NAME...
2.查詢已經安裝的所有包
rpm -qa
3.查詢某檔案是由哪個包安裝產生(如:inittab這個檔案則是由initscripts這個包產生)
rpm -qf /PATH/TO/SOMEFILE
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/5E/18/wKioL1UpNouzGl11AABTiTjVO4w984.jpg" title="4.jpg" alt="wKioL1UpNouzGl11AABTiTjVO4w984.jpg" />
4.查詢尚未安裝的包檔案的相關資訊
rpm -p (通常組合以下選項使用)
-pqi 未安裝包簡要資訊
-pqc 未安裝包產生的設定檔
-pql 未安裝包將產生的檔案清單
[query-options]:
1.查詢某包的簡要說明資訊
rpm -qi PACKAGE_NAME
2.查詢某包安裝產生的檔案清單
rpm -ql PACKAGE_NAME
3.查詢某包安裝完成後產生的設定檔
rpm -qc PACKAGE_NAME
4.查詢某包安裝完成後產生的協助檔案
rpm -qd PACKAGE_NAME
5.查看程式曆史版本以及改版的資訊
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
校正:(查詢包安裝產生的檔案是否發生了改變)
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
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5E/28/wKiom1UpRNLzGXxZAAA1UE9DLQw409.jpg" title="6.jpg" alt="wKiom1UpRNLzGXxZAAA1UE9DLQw409.jpg" />
程式包的合法性驗證:
來源合法:
由我們信任的製作者提供
依賴於:製作者的數位簽章;簽名是作者使用自己的私密金鑰加密程式包的特徵碼進行的;
內容合法:
包未被二次修改;完整性校正成功
依賴於:製作者提供的程式特徵碼:
驗證方式:安裝者用通用的特徵碼提取演算法提取程式包的特徵碼,並與原作者提供的相比較;如果一樣則說明內容合法;
驗證其光碟片中程式包的來源及完整性:
匯入公開金鑰:rpm -import /path/to/RPM-GPG-KEY-FILE
驗證:rpm {-K|--checksig} PACKAGE FILE
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5E/2B/wKiom1UpS-CTKlNVAAFnwE1gr3Q034.jpg" title="8.jpg" alt="wKiom1UpS-CTKlNVAAFnwE1gr3Q034.jpg" />
--nosignnature:不檢查來源合法性
--nodigest:不檢查完整性
rpm管理器資料庫:/var/lib/rpm(每安裝一個程式,安裝資訊都會存放在此目錄下)
重建資料庫:
--initdb:初始化資料庫,即資料庫完全不存在,可建立之;
--rebuilddb:無論當前資料存在否,都會直接重建此庫;
本文出自 “Linux” 部落格,請務必保留此出處http://laoliao.blog.51cto.com/10027070/1631414
我的學習記錄--Linux (CentOS) 程式安裝包管理,rpm