RPM 與 YUM的簡要介紹
CentOS系統中,使用的軟件管理機制為RPM機制,因為或多或少存在軟件屬性依賴的問題,所以作為在線升級的方式則為YUM。下面讓我們來談談RPM與YUM的相關說明。
什麽是RPM
RPM全名是"RedHat Package Manager",簡稱則為RPM,是由Red Hat這家公司發展出來的,RPM是一種以數據庫記錄的方式來將你所需要的軟件安裝到Linux系統的一套管理機制。
RPM最大的特點就是將你要安裝的軟件先編譯過,並且打包成RPM機制的安裝包,通過包裝好的軟件裏頭默認的數據庫記錄這個軟件要安裝的時候必須具備的依賴屬性軟件,當安裝在你的Linux主機時,RPM會先依照軟件裏頭的數據查詢Linux主機的依賴屬性是否滿足,若滿足則給予安裝,如若不滿足則不給予安裝。那麽安裝的時候就該將軟件的信息整個寫入RPM的數據庫中,以便未來的查詢,驗證與反安裝。這樣一來的優點是:
1.由於已經編譯完成且打包完畢,所以軟件傳輸與安裝上很方便(不需要再重新編譯):
2.由於軟件的信息都已經記錄在Linux主機的數據庫上,很方便查詢,升級與反安裝。
但是這也造成些許的困擾。由於RPM文件是已經包裝好的數據,也就是說,裏面的數據都已經"編譯完成"了,所以,該軟件文件幾乎只能安裝在原本默認的硬件與操作系統版本中。也就是說,你的主機系統環境必須要與當初建立這個軟件文件的主機環境相同才行!舉例來說,re-pppoe這個ADSL撥號軟件,它必須要在PPP這個軟件存在的環境下才能進行安裝!如果你的主機沒有ppp這個軟件,那麽很抱歉,除非你先安裝ppp否則re-pppoe不會讓你安裝(當然可以強制安裝,但通常都會有點問題發生)
所以,通常不同的distribution所發布的RPM文件不能用在其他的distributions上。因此可以發現RPM軟件管理機制的問題是:
1,軟件安裝的環境必須與打包時的環境需求一致或相當;
2,需要滿足軟件的依賴屬性需求;
3,反安裝時需要特別小心,最底層的軟件不可先刪除,否則可能造成整個系統的問題。
RPM的優點
由於RPM是通過預編譯並打包成為RPM文件格式後再加以安裝的一種方式,並且能夠進行數據庫的記載,所以RPM有以下的優點:
.RPM內含已經編譯過的程序與設置文件等數據,可以讓用戶免除重新編譯的困擾;
.RPM在被安裝以前,會先檢查系統的硬盤容量,操作系統版本等,可避免文件被錯誤安裝;
.RPM文件本身提供軟件版本信息,依賴屬性軟件名稱,軟件用途說明,軟件所含文件等信息,便於了解軟件;
RPM管理的方式使用數據庫記錄RPM文件的相關參數,便於升級,刪除,查詢與驗證。
為什麽RPM在使用上很方便呢?因為有些軟件是有相關性的,例如要安裝網卡驅動程序,就要有Kernel source與gcc及make等軟件。那麽我們的RPM軟件是否一定可以安裝完成呢?如果該軟件安裝完成之後,卻找不到它相關的前驅軟件,是非常麻煩,因為安裝好的軟件也無法使用。
為了解決解決這種具有相關性的軟件之間的問題(即所謂軟件依賴性),RPM在提供軟件打包的同時,同時加入一些信息記錄的功能,這些信息包括軟件的版本,打包軟件者,依賴屬性的其他軟件,本軟件的功能說明,本軟件的所有文件記錄等,然後在Linux系統上面也建立一個RPM軟件數據庫,如此一來,當你要安裝某個以RPM類型提供的軟件時,在安裝的過程中,RPM會去檢驗一下數據庫裏面是否已經存在相關的軟件了如果數據庫顯示不存在,那麽RPM文件默認不能安裝,這就是RPM的軟件依賴性問題。
RPM屬性依賴的解決方式:YUM在線升級
CentOS先將發布的軟件放置到YUM服務器內,然後分析這些軟件的依賴屬性問題,將軟件內的記錄信息寫下來,然後再將這些信息分析後記錄成軟件相關的清單列表。這些列表數據與軟件所在位置可以稱為容器。當客戶端有軟件安裝的需求時,客戶端主機會主動向網絡上面的YUM服務器的容器網址下載到清單列表,然後再通過清單列表的數據與本機的RPM數據已存在的軟件數據相比較,就能夠一口氣安裝所有需要的具有依賴屬性的軟件了。
當客戶端有升級,安裝的需求時,YUM會向容器要求清單的更新,等到清單更新到本機的/var/cache/yum裏面後,等一下更新時就會用這個本機清單與本機RPM數據庫作比較,這樣就知道該下載什麽軟件,接下來YUM會跑到容器服務器下載所需要的軟件,然後再通過RPM的機制開始安裝軟件,這就是整個流程。
RPM 與 YUM的簡要介紹