1. 程式人生 > >linux 軟體管理方式

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