RPM Tarball 套件管理員
本文已經經過大幅度修改,請分別參考:(這個網頁內容將不再繼續維護)
原始碼與 Tarball 套件管理員
RPM 套件管理員
最近更新日期:2003/02/11

為何需要升級套件
RPM 套件管理程式
  什麼是 RPM 、 SRPM
  什麼是 i386, i586, i686, noarch
  SRPM 與 RPM 所需要的安裝目錄
  RPM 的指令使用
    安裝
    升級與更新
    查詢
    驗證
    反安裝與重建資料庫
Tarball 管理方法
  什麼是 Tarball ( source code )
  Tarball 需要的基礎套件
  Tarball 安裝的基本步驟
  Tarball 的移除與升級
要選擇 RPM 還是 Tarball
函式庫資料ldconfig, ldd,
檢驗軟體正確性md5sum
網路資源
本章習題練習

為何需要升級套件
這真是一個很有趣的課題,為何需要升級套件?如果我的機器運作的好好的,那麼我幹嘛需要升級?通常我們升級的原因主要有三個: 在上面的需求當中,尤其需要注意的是第二點,當一個套件有安全上的顧慮時,千萬不要懷疑,趕緊更新套件吧!否則造成網路危機,那可不是鬧著玩的?那麼更新的方法有哪些呢?其實,目前在 Linux 裡面有相當多的不同的更新套件的方式,包括了 Red Hat 發展的 RPM 與 up2date 的線上更新模式; Debian 這個 distribution 裡頭使用的 dpkg 方法;Sun Unix 上面使用的 pkg 升級方式;目前越來越流行的 apt 線上更新模式;還有原始碼裡頭最常使用的 Tarball 編譯方法等等,如果要一個一個說明的話那也太累人了?所以,這裡我們以目前在 Mandrake, Red Hat, OpenLinux 等 Linux distributions 內常見的 RPM 與 Tarball 的套件升級方式來進行說明: 這兩種方法是各有優缺點啦,我們這裡想要來談一談 RPM 與 Tarball 的安裝方式了!

RPM套件管理員:
Tarball 套件管理員:
要選擇 RPM 還是 Tarball?
優先選擇 RPM:
這一直是個有趣的問題:『如果我要升級的話,或者是全新安裝一個新的套件,那麼該選擇 RPM 還是 Tarball 來安裝呢?』!基本上,如果有 RPM 可以提供給您的 distribution 來安裝,並且沒有嚴重的相依屬性的問題時,呵呵!選擇 RPM 來安裝會是一個比較好的解決方案, Why ?這是由於剛剛上面就提到的 RPM 的好處 啦!可以具有檔案與資料均有紀錄的優點,這就是上面提到的 /var/lib/rpm 這個目錄裡面的資料庫,個記錄可以讓你在管理上更為便利,包括上面提到的 RPM 的升級、安裝、驗證與移除等等。尤其是在查詢上面!可以讓你在管理你的系統上面更為便利。但是 RPM 也不是沒有缺點的,包括最為大家所抱怨連連的『屬性相依』的問題,每一個不同版本之間,就必須要以不同的 RPM 檔案來安裝!此外,如果要升級『某一個套件』而已時,通常還需要連帶其他的套件也必須要一起升級才行,否則會有問題!此外,當一個套件經過了『大幅度的修改』之後,通常舊的 RPM 與新的 RPM 之間已經幾乎無法『完全相容』時,呵呵!那麼升級或者是移除的手續可是會累壞人的!例如最近朋友們常常問到的 Apache 1.3.xx 與 2.0.xx 的版本升級問題!由於架構上面差異性太大,加上版本屬性相依問題很難得到一個完滿的解決方案,這個時候 RPM 就不那麼合適了。(除非您要一個一個的將 Apache 移除,連同其相依的套件,然後再將 Apache 一個一個的安裝,包括新套件的相依套件! ^_^ .....我是不會這麼做的啦! )
簡易方法:
所以這個時候 Tarball 的方式就特別適合您的安裝了!這是因為 Tarball 可以自行設定編譯時的參數,此外,也可以自行設定『安裝路徑』,相當的適合於想要安裝『多個不同版本的同一個套件』的情況!這是怎麼說呢?!由於 RPM 必須要配合系統裡面其他的相依屬性的套件,所以基本上,他的安裝路徑(就是每個檔案的放置路徑)理論上是放死的,就是不能隨意的改變他的安裝路徑,因此,當有兩個不同版本的相同套件想要測試的時候,大概一定就得將原先的版本移除之後,才能安裝使用先的版本囉!(此外,由於相依的套件幾乎都已經包含在 tarball 當中了,所以安裝上面其實並不難啦!)
然而 tarball 可不是這樣的!你可以自行編譯並且安裝在不同的路徑,只要在啟動的時候啟動適當的版本,那麼不同版本的套件可以同時的存在於一個系統當中,而且可以透過選擇啟動的檔案來啟動不同的版本。當然囉!你也可以讓 tarball 的安裝與 RPM 的安裝同時存在於一個系統當中,但是需要特別留意的是,你在啟動該套件的時候,千萬記得你的啟動路徑!免得啟動到了錯誤的版本了!呵呵!(這也是一個系統存在不同多個版本的套件容易發生的錯誤!希望大家都能夠瞭解這個問題呢!)
所以說,為了避免這種路徑上的錯誤困擾,基本上,我們都希望 Tarball 的安裝路徑可以設定在 Linux 原本就規劃要給大家安裝的路徑『 /usr/local 』這個路徑下!這樣可以省去相當多尋找檔案的時間!而且在管理上面也會比較容易!呵呵!
不過, Tarball 最麻煩的地方有幾點: 所以說,RPM 與 Tarball 各有其優缺點,不過,如果有 RPM 的話,那麼優先權還是在於 RPM 安裝上面,畢竟管理上比較便利,但是如果套件的架構差異性太大,或者是無法解決相依屬性的問題,那麼與其花大把的時間與精力在解決屬性相依的問題上,還不如直接以 tarball 來安裝,輕鬆又愜意!

函式庫資料: ldconfig, ldd,

檢驗軟體正確性
在我們的 Linux 系統當中,為了怕系統商( distribution )推出的檔案被修改過,因此都會有所謂的 MD5 的軟體指紋驗證功能!例如在南台灣最大的 ftp 學術網站 中山大學的 ftp 網站 裡頭的 Red Hat 7.3 這個可開機光碟的完整套件,在該目錄底下,除了完整的的可開機光碟的映象檔(image)之外,還會附上一個檔名為 MD5SUM 的檔案,這個檔案的內容有點像這樣:
 
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

c9a4d963a49e384e10dec9c2bd49ad73  valhalla-SRPMS-disc1.iso
41b03d068e84d2a17147aa27e704f79b  valhalla-SRPMS-disc2.iso
cb91810ce8173039fed24420407e4c59  valhalla-i386-disc1.iso
ec1b813d32ffdc8edc2be261735d17de  valhalla-i386-disc2.iso
5dc81ce523cfddf99b4d4d63e91bcaa7  valhalla-i386-disc3.iso
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE8z/oCIZGAzdtCpg4RAsMvAJ9+xOn4Pw1T0mp8zVT64cEDWuqqKwCfblTd
4Lw0SvJC+v/6JbGIxJWL7aA=
=0xs+
-----END PGP SIGNATURE-----

 
這說明的是,『在 valhalla-i386-disc1.iso 這個檔案中,有個 MD5SUM 的檔案指紋表,如果該檔案是原本開發廠商提供的檔案時(沒有被修改過!),則以 md5sum 這支程式進行檢驗時,會得到左邊的指紋表!』那有什麼用呢?!呵呵!用途可大了,前一陣子不是常常發現有些免費的軟體被利用來作為收集使用者的電子郵件、常上網站資料,及其他使用者私人的資訊嗎?嘿嘿!那就是利用軟體的特性來『偷』使用者的咚咚,那麼萬一 Red Hat 提供的光碟映象檔(image)被下載之後,讓有心人士偷偷修改過,再轉到 Internet 上面流傳,那麼你下載的這個檔案偏偏不是原廠提供的,呵呵!你能保證該檔案的內容完全沒有問題嗎?!當然不能對不對?!是的,這個時候就有 md5sum 這個檔案指紋的咚咚出現啦!說說他的用法吧!

網路資源
剛剛最前面說過了,套件升級最主要的考量就是『安全性』啦!所以請隨時注意安全性方面的問題!目前國內的主要安全網站為:『台灣網路危機處理小組』這個組織,請隨時注意上面發佈的新聞!另外,如果跟鳥哥一樣使用的是 Red Hat 的 distrubution 的話,那麼 Red Hat 的 Errata 網頁則不可不光臨!好啦!底下列出幾個 RPM 相關的網頁與 Red Hat 的 Errata 網頁提供大家參考囉!

本章習題練習 ( 要看答案請將滑鼠移動到『答:』底下的空白處,按下左鍵圈選空白處即可察看 )

2002/08/21:第一次完成
2003/02/11:重新編排與加入 FAQ
2004/04/10:已經更新至新版內容,這個網頁將不再維護!