概述:
因爲一個應用程序是由很多文件所組成,所以安裝卸載非常複雜,爲了讓用戶更加方便的管理應用程序。所以引入了程序打包管理。主要包括:安裝,卸載,升級,查詢,檢驗。
常見的包管理器:
.deb: Debian研發
.rpm: Red Hat研發(Linux上的包管理器公共標準,故我學習的爲rpm)
常見的CPU平臺:(所以選擇應用程序安裝的時候,一定選擇和自己CPU所匹配的版本)
x86:i386, i486, i586, i686
x86_64: x86_64, amd64
分包機制:
核心包:主包,主要程序。
子包:爲程序增加附加功能的包。
程序包獲取途徑:(務必在正規渠道獲得程序包)
1、系統的發行光盤鏡像或官方站點(或鏡像服務器)
推薦站點:
2、程序包的官方站點
3、可信任的第三方組織
4、程序包搜索引擎
推薦站點:
---------------------------------------------------------
準備實驗環境:
1.準備CentOS6.6虛擬機
2.掛載CentOS6.6系統光盤DVD1
rpm命令:
安裝:(安裝新的程序包)
rpm -i [install-options] PACKAGE_FILE1 ...
-h:hash,以#號來表示安裝進度
-v:顯示安裝過程中的詳細信息
-vv:詳細
-vvv:更詳細
--test:不執行真正的安裝過程,而僅報告依賴關係及衝突信息
程序包之間是存在依賴關係的:因爲程序包是由衆多目的單一的小程序組成,結果導致他們之間存在相關性,所以有時候安裝某個程序的時候,它會提示你缺少某些包。如下:
--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
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
程序包的合法性驗證:
來源合法:
由我們信任的製作者提供
依賴於:製作者的數字簽名;簽名是作者使用自己的私鑰加密程序包的特徵碼進行的;
內容合法:
包未被二次修改;完整性校驗成功
依賴於:製作者提供的程序特徵碼:
驗證方式:安裝者用通用的特徵碼提取算法提取程序包的特徵碼,並與原作者提供的相比較;如果一樣則說明內容合法;
驗證其光盤中程序包的來源及完整性:
導入公鑰:rpm -import /path/to/RPM-GPG-KEY-FILE
驗證:rpm {-K|--checksig} PACKAGE FILE
--nosignnature:不檢查來源合法性
--nodigest:不檢查完整性
rpm管理器數據庫:/var/lib/rpm(每安裝一個程序,安裝信息都會存放在此目錄下)
重建數據庫:
--initdb:初始化數據庫,即數據庫完全不存在,可新建之;
--rebuilddb:無論當前數據存在否,都會直接重建此庫;