yum在線升級

RPM優勢數據庫

由於 RPM 是透過預先編譯並打包成爲 RPM 文件格式後,再加以安裝的一種方式,而且還可以進行數據庫的記載。 因此 RPM 有如下的優勢:centos

  • RPM 內含已經編譯過的程序與配置檔等數據,可讓使用者免除從新編譯的困擾;
  • RPM 在被安裝以前,會先檢查系統的硬盤容量、操做系統版本等,可避免文件被錯誤安裝;
  • RPM 文件自己提供軟件版本資訊、相依屬性軟件名稱、軟件用途說明、軟件所含文件等資訊,便於瞭解軟件;
  • RPM 管理的方式使用數據庫記錄 RPM 文件的相關參數,便於升級、移除、查詢與驗證。

爲何 RPM 在使用上很方便呢?咱們前面提過, RPM 這個軟件管理員所處理的軟件,是由軟件提供者在特定的 Linux 做業平臺上面將該軟件編譯完成而且打包好。那使用者只要拿到這個打包好的軟件, 而後將裏頭的文件放置到應該要擺放的目錄,不就完成安裝羅?對啦!就是這樣!服務器

爲何要用yum?網絡

可是有沒有想過,咱們在前一章裏面提過的,有些軟件是有相關性的,例如要安裝網絡卡驅動程序,就得要有 kernel source 與 gcc 及 make 等軟件。那麼咱們的 RPM 軟件是否必定能夠安裝完成呢?若是該軟件安裝以後,卻找不到他相關的前驅軟件, 那不是挺麻煩的嗎?由於安裝好的軟件也沒法使用啊!ide

爲了解決這種具備相關性的軟件之間的問題 (就是所謂的軟件相依屬性),RPM 就在提供打包的軟件時,同時加入一些信息登陸的功能,這些信息包括軟件的版本、 打包軟件者、相依屬性的其餘軟件、本軟件的功能說明、本軟件的全部文件記錄等等,而後在 Linux 系統上面亦建立一個 RPM 軟件數據庫,如此一來,當你要安裝某個以 RPM 型態提供的軟件時,在安裝的過程當中, RPM 會去檢驗一下數據庫裏面是否已經存在相關的軟件了, 若是數據庫顯示不存在,那麼這個 RPM 文件『默認』就不能安裝。呵呵!沒有錯,這個就是 RPM 類型的文件最爲人所詬病的『軟件的屬性相依』問題啦!url


小標題的圖示RPM 屬性相依的克服方式: YUM 線上升級spa

爲了重複利用既有的軟件功能,所以不少軟件都會以函式庫的方式發佈部分功能,以方便其餘軟件的呼叫應用, 例如 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 使用的流程示意圖
圖 1.5.一、YUM 使用的流程示意圖

當用戶端有升級、安裝的需求時, 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 這個容器內容而已,其餘的容器內容請自行查閱羅!上面的數據須要注意的是:

    • [base]:表明容器的名字!中刮號必定要存在,裏面的名稱則能夠隨意取。可是不能有兩個相同的容器名稱, 不然 yum 會不曉得該到哪裏去找容器相關軟件清單文件。

    • name:只是說明一下這個容器的意義而已,重要性不高!

    • mirrorlist=:列出這個容器可使用的映射站臺,若是不想使用,能夠註解到這行;

    • baseurl=:這個最重要,由於後面接的就是容器的實際網址! mirrorlist 是由 yum 程序自行去捉映射站臺, baseurl 則是指定固定的一個容器網址!咱們剛剛找到的網址放到這裏來啦!

    • enable=1:就是讓這個容器被啓動。若是不想啓動可使用 enable=0 喔!

    • gpgcheck=1:還記得 RPM 的數碼簽章嗎?這就是指定是否須要查閱 RPM 文件內的數碼簽章!

    • gpgkey=:就是數碼簽章的公鑰檔所在位置!使用默認值便可                
 
列出目前 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/ # 有多個配置檔,因此你會發現還有其餘的容器存在。
相關文章
相關標籤/搜索