linux 軟體管理方式
linux系統中軟體的安裝,升級,解除安裝
centos軟體管理方式:
二進位制檔案(注意相容問題)
原始碼編譯安裝,
軟體管理器rpm
軟體管理器前段工具yum
軟體包組成:
二進位制檔案:/bin /usr/bin...
庫檔案:/lib /usr/lib (標頭檔案 /usr/include)
配置檔案:/etc
幫助檔案:手冊, README, INSTALL (/usr/share/doc/)
1 軟體管理器
軟體包管理器內部有一個數據庫,其中記載著程式的基本資訊,校驗資訊,程式路徑資訊等。一個 RPM 包包含了已壓縮的軟體檔案集以及該軟體的內容資訊(在標頭檔案中儲存),通常表現為以 .rpm 副檔名結尾的檔案,例如 package.rpm 。對其操作,需要使用 rpm 命令。
安裝rpm包
rpm -ivh package.rpm
升級 RPM 包命令
# rpm -Uvh package.rpm
解除安裝 RPM 包命令
rpm -ev package
查詢 RPM 包中包含的檔案列表命令
rpm -qlp package
查詢 RPM 包中包含的內容資訊命令
# rpm -qip package
查詢系統中所有已安裝 RPM 包
rpm -qa
查詢包的依賴關係
rpm -qR
使用 --nodeps 輔助引數,則安裝過程將不理會依賴性關係限制,強制安裝目標包,如
rpm -i --nodeps package_a.rpm
RPM 中的預設安裝規則是不允許同一個包多次安裝的,也不允許降級安裝。使用 --force 輔助引數將不考慮以上因素,強制安裝 RPM 包。但是,--force 無法強制安裝一個不滿足系統依賴性關係的包 ( 此時需要用到 --nodeps 引數 ) 。使用方法如:
rpm -i --force package_a.rpm
查詢系統中已經安裝的某個檔案屬於哪個 RPM 包
rpm -qf xxx 返回資訊 : xxx-8.5-20081211.1920
RPM 包的安裝時間
rpm -qa --last 返回資訊 : 系統中所有軟體的安裝時間
2 軟體包依賴性關係
由於開源的多型性,Linux 作業系統中的軟體之間的依賴性關係處理一直令使用者感到頭疼。如果 package_a 依賴於 package_b,那麼在一個沒有安裝 package_b 的系統中,package_a 是不被系統推薦安裝的,強制安裝很可能會導致軟體無法正常工作。基於以上 package_a 和 package_b 的關係,在一個乾淨的系統中 ( 未安裝 package_a 或 package_b),欲安裝 package_a,錯誤通常會表現為:
rpm -ivh package_a.rpm
error: Failed dependencies:
pacakge_b = version info is needed by package_a
查詢軟體包依賴關係
rpm -qRp package_a.rpm
巢狀的依賴關係
如上示例為最理想的依賴關係,實際應用中往往最令使用者頭疼的是 package_a 依賴於 package_b/c/d/e/f 等多個包 , 而 package_b/c/d/e/f 等包又依賴於 package_b1,b2,b3/c1,c2/d1,d2/e1,e2/f1,f2 等等 ... ... 為保證軟體的正常使用,必須找到所有依賴包以及子依賴包並且安裝。過多的依賴關係大大降低了 Linux 軟體安裝的使用者友好性。所以針對此類問題,使用了更高階的包管理策略去解決 - Yum/APT 。
3 yum線上升級
YUM 基於 RPM 包管理工具,能夠從指定的源空間(伺服器,本地目錄等)自動下載目標 RPM 包並且安裝,可以自動處理依賴性關係並進行下載、安裝,無須繁瑣地手動下載、安裝每一個需要的依賴包。此外,YUM 的另一個功能是進行系統中所有軟體的升級。如上所述,YUM 的 RPM 包來源於源空間,在 RHEL 中由 /etc/yum.repos.d/ 目錄中的 .repo 檔案配置指定
安裝指定軟體
yum -y install package-name
列出系統中可升級的所有軟體
yum check-update
升級指定軟體
yum update package-name
列出系統中已安裝軟體
yum list installed
在升級過程中接受所有互動問答
yum -y update
解除安裝指定軟體
yum remove package-name
查詢軟體包資訊,列出依賴
yum info package
yum deplist package
搜尋包
yum search
參考
https://www.ibm.com/developerworks/cn/linux/l-cn-rpmdpkg/index.html