為何需要升級套件 這真是一個很有趣的課題,為何需要升級套件?如果我的機器運作的好好的,那麼我干嘛需要升級?通常我們升級的原因主要有三個: ·需要新的功能,但舊有主機並沒有,所以需要安裝新的套件; ·舊版本的套件上面可能有安全上的顧慮,所以需要更新到新版的套件; ·舊版的套件執行效能不彰,或者執行的能力不能讓管理者滿足。 在上面的需求當中,尤其需要注意的是第二點,當一個套件有安全上的顧慮時,千萬不要懷疑,趕緊更新套件吧!否則造成網路危機,那可不是鬧著玩的?那麼更新的方法有哪些呢?其實,目前在 Linux 裡面有相當多的不同的更新套件的方式,包括了 Red Hat 發展的 RPM 與 up2date 的線上更新模式; Debian 這個 distribution 裡頭使用的 dpkg 方法;Sun Unix 上面使用的 pkg 升級方式;目前越來越流行的 apt 線上更新模式;還有原始碼裡頭最常使用的 Tarball 編譯方法等等,如果要一個一個說明的話那也太累人了?所以,這裡我們以目前在 Mandrake, Red Hat, OpenLinux 等 Linux distributions 內常見的 RPM 與 Tarball 的套件升級方式來進行說明: ·RPM 目前使用最廣泛的套件管理程式之一,利用資料庫管理的方式來進行套件的安裝,具有相當容易的操作介面,而且套件查詢驗證的功能相當強大,不過麻煩的地方在於他的屬性相依的問題; ·Tarball 直接以原始碼( source code )經過編譯後,進行安裝。在安裝上面具有較大的靈活度,可以隨時更改使用者喜好的參數。但是需要其他的套件協助,例如 gcc compiler, kernel-header, make 套件等等,並且在反安裝上面具有一定程度的困難度; 這兩種方法是各有優缺點啦,我們這裡想要來談一談 RPM 與 Tarball 的安裝方式了! RPM套件管理員: 接下來我們先談論一下廣為流傳與使用的 RPM 套件管理員的相關使用方法喔! ·什麼是 RPM 、 SRPM ? RPM 全名是『 RedHat Package Manager 』簡稱則為 RPM 啦!顧名思義,當初這個套件管理的程式是由 Red Hat 這家公司發展出來的,但其實在很多的其他套件也有相類似的套件管理程式。不過由於 RPM 使用上很方便,所以就成了目前最熱門的套件管理程式啦!那麼什麼是 RPM 呢?說的簡單一點, RPM 是以一種資料庫記錄的方式來將你所需要的套件安裝到你的 Linux 主機的一套管理程式。他最大的特點就是將您要安裝的套件先包裝好了,透過包裝好的套件裡頭預設的資料庫記錄,記錄這個套件要安裝的時候必須要的相依屬性模組(就是你的 Linux 主機需要先存在的幾個必須的套件),當安裝在你的 Linux 主機時, RPM 會先依照套件裡頭的紀錄資料查詢 Linux 主機的相依屬性套件是否滿足,若滿足則予以安裝,若不滿足則不予安裝。那麼安裝的時候就將該套件的資訊整個寫入 RPM 的資料庫中,以便未來的查詢、驗證與反安裝!這樣一來的優點是: 1.由於已經編譯完成並且打包完畢,所以安裝上很方便; 2.由於套件的資訊都已經記錄在 Linux 主機的資料庫上,很方便查詢、升級與反安裝; 但是這也造成很大的困擾,由於 RPM 程式是已經包裝好的資料,也就是說,裡面的資料已經都『編譯完成』了!所以,安裝的時候一定需要當初安裝時的主機環境才能安裝,也就是說,當初建立這個套件的安裝環境必須也要在你的主機上面出現才行!例如 rp-pppoe 這個 ADSL 撥接套件,他必須要在 ppp 這個套件存在的環境下才能進行安裝!如果你的主機並沒有 ppp 這個套件,那麼很抱歉,除非您先安裝 ppp 否則 rp-pppoe 就是不讓你安裝的(當然您可以強制安裝,但是通常都會有點問題發生就是了!)。所以,通常不同的 distribution 所釋出的 RPM 檔案,並不能用在其他的 distribution 裡面,舉例來說, Red Hat 釋出的 RPM 檔案,通常無法直接在 Mandrake 上面進行安裝的,更有甚者,不同版本之間也無法互通,例如 Mandrake 9.0 的 RPM 檔案就無法直接套用在 8.2 上面!因此,這樣可以發現他的缺點是: 3.安裝的環境必須與打包時的環境需求一致或相當; 4.需要滿足套件的相依屬性需求; 5.反安裝時需要特別小心,最底層的套件不可先移除,否則可能造成整個系統的問題! 那怎麼辦?呵呵!還好,還有 SRPM 這個東西! SRPM 是什麼呢?他也是一種 RPM 啦!但是由於裡面連同當初編譯之前的原始碼都在裡頭,所以可以進行重新編譯的動作。通常 SRPM 的附檔名是 ****.src.rpm 這一種檔案格式。由於 SRPM 包含了原始碼及參數設定檔案,所以在安裝之前則必須重新的編譯建立起包裝的資訊檔案套件才行!當然啰,如果在編譯的過程中發生了問題,也可以藉由裡頭的原始碼更動來修正問題的所在呢!所以說, RPM 與 SRPM 最大的差異就是在於有沒有包含原始碼的程式啦! ·什麼是 i386, i586, i686, noarch 好啦!現在我們已經知道 RPM 與 SRPM 的格式了,分別為: xxxxxxxxx.rpm