RPM優勢數據庫
由於 RPM 是透過預先編譯並打包成爲 RPM 文件格式後,再加以安裝的一種方式,而且還可以進行數據庫的記載。 因此 RPM 有如下的優勢:centos
爲何 RPM 在使用上很方便呢?咱們前面提過, RPM 這個軟件管理員所處理的軟件,是由軟件提供者在特定的 Linux 做業平臺上面將該軟件編譯完成而且打包好。那使用者只要拿到這個打包好的軟件, 而後將裏頭的文件放置到應該要擺放的目錄,不就完成安裝羅?對啦!就是這樣!服務器
爲何要用yum?網絡
可是有沒有想過,咱們在前一章裏面提過的,有些軟件是有相關性的,例如要安裝網絡卡驅動程序,就得要有 kernel source 與 gcc 及 make 等軟件。那麼咱們的 RPM 軟件是否必定能夠安裝完成呢?若是該軟件安裝以後,卻找不到他相關的前驅軟件, 那不是挺麻煩的嗎?由於安裝好的軟件也沒法使用啊!ide
爲了解決這種具備相關性的軟件之間的問題 (就是所謂的軟件相依屬性),RPM 就在提供打包的軟件時,同時加入一些信息登陸的功能,這些信息包括軟件的版本、 打包軟件者、相依屬性的其餘軟件、本軟件的功能說明、本軟件的全部文件記錄等等,而後在 Linux 系統上面亦建立一個 RPM 軟件數據庫,如此一來,當你要安裝某個以 RPM 型態提供的軟件時,在安裝的過程當中, RPM 會去檢驗一下數據庫裏面是否已經存在相關的軟件了, 若是數據庫顯示不存在,那麼這個 RPM 文件『默認』就不能安裝。呵呵!沒有錯,這個就是 RPM 類型的文件最爲人所詬病的『軟件的屬性相依』問題啦!url
爲了重複利用既有的軟件功能,所以不少軟件都會以函式庫的方式發佈部分功能,以方便其餘軟件的呼叫應用, 例如 PAM 模塊的驗證功能。此外,爲了節省使用者的數據量,目前的 distributions 在釋出軟件時, 都會將軟件的內容分爲通常使用與開發使用 (development) 兩大類。因此你纔會經常看到有相似 pam-x.x.rpm 與 pam-devel-x.x.rpm 之類的檔名啊!而默認狀況下,大部分的 software-devel-x.x.rpm 都不會安裝,由於終端用戶大部分不會去開發軟件嘛!操作系統
由於有上述的現象,所以 RPM 軟件文件就會有所謂的屬性相依的問題產生 (其實全部的軟件管理幾乎都有這方面的狀況存在)。 那有沒有辦法解決啊?前面不是談到 RPM 軟件文件內部會記錄相依屬性的數據嗎?那想想,要是我將這些相依屬性的軟件先列表, 在有要安裝軟件需求的時候,先到這個列表去找,同時與系統內已安裝的軟件相比較,沒安裝到的相依軟件就一口氣同時安裝起來, 那不就解決了相依屬性的問題了嗎?有沒有這種機制啊?有啊!那就是 YUM 機制的由來!server
CentOS 先將發佈的軟件放置到 YUM 服務器內,而後分析這些軟件的相依屬性問題,將軟件內的記錄資訊寫下來 (header)。 而後再將這些資訊分析後記錄成軟件相關性的清單列表。這些列表數據與軟件所在的位置能夠稱呼爲容器 (repository)。 當用戶端有軟件安裝的需求時,用戶端主機會主動的向網絡上面的 yum 服務器的容器網址下載清單列表, 而後透過清單列表的數據與本機 RPM 數據庫已存在的軟件數據相比較,就可以一口氣安裝全部須要的具備相依屬性的軟件了。 整個流程能夠簡單的以下圖說明:ip
當用戶端有升級、安裝的需求時, yum 會向容器要求清單的升級,等到清單升級到本機的 /var/cache/yum 裏面後, 等一下升級時就會用這個本機清單與本機的 RPM 數據庫進行比較,這樣就知道該下載什麼軟件。接下來 yum 會跑到容器服務器 (yum server) 下載所須要的軟件,而後再透過 RPM 的機制開始安裝軟件啦!這就是整個流程!
yum在線升級機制
1. 利用yum進行查詢、安裝、升級與刪除功能
查詢功能:yum [list|info|search|provides|whatprovides] 參數
[root@www ~]# yum [option] [查詢工做項目] [相關參數]
選項與參數: [option]:主要的選項,包括有: -y :當 yum 要等待使用者輸入時,這個選項能夠自動提供 yes 的迴應; --installroot=/some/path :將該軟件安裝在 /some/path 而不使用默認路徑 [查詢工做項目] [相關參數]:這方面的參數有: search :搜尋某個軟件名稱或者是描述 (description) 的重要關鍵字; list :列出目前 yum 所管理的全部的軟件名稱與版本,有點相似 rpm -qa; info :同上,不過有點相似 rpm -qai 的運行結果; provides:從文件去搜尋軟件!相似 rpm -qf 的功能!
eg: yum info mdadm 找出mdadm這個軟件的功能
yum list updates 列出當前yum server上可供本機進行升級的軟件有哪些
yum provides passwd 列出提供passwd這個文件的軟件有哪些
安裝/升級功能:yum[install|update] 軟件
[root@www ~]# yum [option] [查詢工做項目] [相關參數]
選項與參數: install :後面接要安裝的軟件! update :後面接要升級的軟件,若要整個系統都升級,就直接 update 便可
刪除功能:yum [remove]軟件
yum的設置文件
[root@www ~]# vi /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
|
如上所示,僅列出 base 這個容器內容而已,其餘的容器內容請自行查閱羅!上面的數據須要注意的是:
列出目前 yum server 所使用的容器有哪些?
[root@www ~]# yum repolist all
repo id repo name status
addons CentOS-5 - Addons enabled
base CentOS-5 - Base enabled
c5-media CentOS-5 - Media disabled
centosplus CentOS-5 - Plus disabled
extras CentOS-5 - Extras enabled
updates CentOS-5 - Updates enabled
# 上面最右邊有寫 enabled 纔是有啓動的!由於 /etc/yum.repos.d/ # 有多個配置檔,因此你會發現還有其餘的容器存在。