RPM 與 SRPM 套件

  1. 何謂 RPM?
    1. RPM 全名是『 RedHat Package Manager 』簡稱為 RPM。
    2. 由 Red Hat 公司發展出來,由於 RPM 使用方便,所以成了目前最熱門的套件管理程式。
    3. RPM 是以資料庫記錄的方式來將所需要的套件安裝到 Linux 主機的一套管理程式。
    4. RPM 將要安裝的套件先編譯過,並且打包好,安裝時 RPM 會先依照套件裡的紀錄資料查詢相依屬性套件是否滿足,若滿足則予以安裝,若不滿足則不予安裝。
  2. RPM 優點:
    1. 免編譯:已編譯;
    2. 避免安裝錯誤:安裝前先檢查系統的硬碟容量、作業系統版本等;
    3. 瞭解套件:提供套件版本資訊、相依屬性套件名稱、套件用途說明、套件所含檔案等資訊;
    4. 安裝、移除、更新升級及驗證套件方便:資料庫記錄參數,且一個指令即可完成。
    5. 容易傳送:打包成一個檔案。
  3. RPM 缺點:
    1. 安裝的環境必須與打包時的環境需求一致或相當;
    2. 相依套件必須滿足;
    3. 反安裝時,下層套件不可先移除,否則可能造成整個系統的問題。
  4. RPM 套件的屬性相依
    1. RPM 打包套件檔案時,會同時加入套件的訊息。例如:
      1. 版本、
      2. 打包套件者、
      3. 相依屬性的套件、
      4. 套件的功能說明、
      5. 套件的所有檔案與目錄紀錄。
    2. 在 Linux 系統上亦建立一個 RPM 套件資料庫。
    3. 當要安裝某個以 RPM 型態提供的套件時,如果資料庫顯示其相依套件不存在,則會顯示錯誤訊息。
    4. 屬性相依的克服方式
      1. 手動下載並安裝好所有相依套件。
      2. 利用 urpmi 安裝 rpm 套件:自行尋找未安裝的相依套件加以安裝。

  5. 何謂 SRPM?
    1. SRPM 是 Source RPM,也就是 RPM 檔案裡含有原始碼( Source Code )。
    2. SRPM 除含 tarball 原始碼外,亦包含 rpm 規格檔 .spec,提供重建 rpm 套件所有資訊。例如:所須相依性套件。
    3. SRPM 可經由修改規格檔,以重建符合自己系統之 rpm 套件。
  6. SRPM 安裝與利用:
    1. 先將該套件以 RPM 管理的方式安裝;
    2. 安裝完成後,會有原始碼 tarball 及 rpm 規格檔 .spec;
    3. 修改、重新編譯原始碼,再打包成 tarball;
    4. 修改 rpm 規格檔,以適合自己的 Linux 環境;
    5. 重建 RPM 套件;
    6. 以 RPM 管理方式,將重建之 RPM 套件安裝至系統;
  7. RPM 與 SRPM 的格式:
    name-version-release.architecture.rpm    %*<== RPM 檔名格式*)
    name-version-release.src.rpm             %*<== SRPM 檔名格式*)
    
    1. 例如檔案 kplayer-0.5.3-5mdv2007.0.i586.rpm 的意義為:
      kplayer -    0.5.3      - 5mdv2007.0  .   i586     .  rpm
      套件名稱   套件的版本資訊    釋出的次數    適合的硬體平台  附檔名
      
    2. 釋出版本次數:5mdv2007.0。
      1. 不同的 distirbution 會有不同的環境與函式庫,釋出版本次數後可能會再加上 distirbution 的簡寫。
      2. mdv2007.0 表示 Linux distribution Mandriva 2007.0。
      3. 安裝 RPM 套件,最好選擇相同環境之檔案,即 distirbution 的簡寫與自己的系統環境相同。
    3. 操作硬體平台之選擇:
      1. 平台名稱說明:
        平台名稱 適合平台說明
        i386 幾乎適用於所有的 x86 平台。
          i 是 Intel 相容的 CPU,386 是 CPU 的等級。
        i586 586 等級的電腦,包括 pentum 第一代 MMX CPU,
          AMD 的 K5, K6 系列等 CPU。
        i686 pentum II 以後的 Intel 系列 CPU,
          及 K7 以後等級的 CPU。
        noarch 沒有任何硬體等級上的限制。
        athlon AMD Athlon 晶片。
      2. i386 可安裝在 586 或 686 的機器;
      3. i686 是針對 686 等級的 CPU 進行最佳化編譯,所以不一定可以使用於 386 或 586 的硬體。
      4. 在 686 的機器上使用 i686 的檔案會比使用 i386 的檔案,效能可能比較好。
      5. 目前 Linux distribution Mandriva 2007.0 釋出之 rpm,平台名稱為 i586。
  8. RPM 檔案系統
    1. Mandriva 2007 以 /usr/src/rpm/ 為工作目錄
    2. /usr/src/rpm 以下五個目錄:
      rpm 子目錄 說明
      BUILD 編譯過程中,暫存資料放置目錄。
      RPMS 編譯打包成功後,完成的 rpm 檔案放置目錄。
      SOURCES 放置套件的原始碼,即 tarball 檔。
      SPECS 放置套件的規格檔 spec 檔案。
      SRPMS 編譯打包成功後,完成的 srpm 檔案放置目錄。
    3. /usr/src/rpm/RPMS 目錄通常有一些架構的子目錄,如下:
      $ ls RPMS
      athlon
      i386
      i486
      i586
      i686
      noarch
      
練習題
  1. RPM 全名為何?
    Sol. RedHat Package Manager
  2. 何謂 RPM?
    Sol. 以資料庫記錄的方式來將所需要的套件安裝到 Linux 主機的一套管理程式。
  3. RPM 套件是否經過編譯?
    Sol. 是。
  4. RPM 套件安裝前是否會檢查相依屬性套件?
    Sol. 會。
  5. RPM 套件安裝時將套件的資訊寫入資料庫之目的為何?
    Sol. 便於查詢、驗證、升級更新及反安裝。
  6. 請列舉 RPM 套件之優點。
    Sol. 1.免編譯;2.避免安裝錯誤:3.可瞭解套件;4.更新升級、移除、查詢與驗證方便;5.容易傳送。
  7. 請列舉 RPM 套件之缺點。
    Sol. 1.安裝的環境要一致;2.相依套件要滿足;3.下層套件不可先移除。
  8. RPM 打包套件檔案時,會同時加入套件的訊息。請列舉三項。
    Sol. 1.版本、2.打包套件者、3.相依屬性的套件、4.套件的功能說明、5.套件的所有檔案與目錄紀錄。
  9. 如何克服 RPM 安裝套件屬性相依的問題?
    Sol. 1.手動下載並安裝好所有相依套件。2.利用 urpmi 安裝 rpm 套件。
  10. 何謂 SRPM?
    Sol. SRPM 是 Source RPM,也就是 RPM 檔案裡含有原始碼。
  11. 請說明 SRPM 與 tarball 之差異?
    Sol. SRPM 除含 tarball 原始碼外,亦包含 rpm 規格檔 .spec,提供重建 rpm 套件所有資訊。例如:所須相依性套件。
  12. 請說明 SRPM 之優點?
    Sol. SRPM 可經由修改規格檔,以重建符合自己系統之 rpm 套件。
  13. 下載 SRPM 並以 RPM 管理的方式安裝後,會有那些檔案?
    Sol. tarball 及 rpm 規格檔 .spec。
  14. 修改 rpm 規格檔 .spec 的主要目的為何?
    Sol. 以重建符合自己系統之 rpm 套件。
  15. 請寫出 RPM 檔名格式。
    Sol. name-version-release.architecture.rpm
  16. 請寫出 SRPM 檔名格式。
    Sol. name-version-release.src.rpm
  17. 檔案 kplayer-0.5.3-5mdv2007.0.i586.rpm 之套件名稱為何?
    Sol. kplayer
  18. 檔案 kplayer-0.5.3-5mdv2007.0.i586.rpm 之套件版本資訊為何?
    Sol. 0.5.3
  19. 檔案 kplayer-0.5.3-5mdv2007.0.i586.rpm 之套件釋出的次數為何?
    Sol. 5mdv2007.0
  20. 檔案 kplayer-0.5.3-5mdv2007.0.i586.rpm 之套件適合的硬體平台為何?
    Sol. i586
  21. 檔案 kplayer-0.5.3-5mdv2007.0.i586.rpm 中 mdv2007.0 代表意義為何?
    Sol. mdv2007.0 表示打包之環境為 Mandriva 2007.0。
  22. 將檔案 kplayer-0.5.3-5mdv2007.0.i586.rpm 安裝在 Fedora 7 是否恰當?為什麼?
    Sol. 不恰當,因打包環境為 Mandriva 2007.0,不見得適合合 Fedora 7。
  23. 檔案 kplayer-0.5.3-5mdv2007.0.i586.rpm 中 i586 代表意義為何?
    Sol. 適合安裝於 Intel 相容的 CPU 等級 586 的電腦。
  24. 檔案 kplayer-0.5.3-5mdv2007.0.noarch.rpm 中 noarch 代表意義為何?
    Sol. 安裝上沒有任何硬體等級上的限制。
  25. 檔案 kplayer-0.5.3-5mdv2007.0.athlon.rpm 中 athlon 代表意義為何?
    Sol. 適合安裝於 AMD Athlon 晶片的電腦。
  26. 檔案 kplayer-0.5.3-5mdv2007.0.i386.rpm 是否可安裝在 586 等級的電腦?
    Sol. 可以。
  27. 檔案 kplayer-0.5.3-5mdv2007.0.i586.rpm 是否可安裝在 386 等級的電腦?
    Sol. 不可以。
  28. RPM 檔案系統工作目錄 /usr/src/rpm/ 下之子目錄 BUILD 主要用途為何?
    Sol. 編譯過程中,暫存資料放置目錄。
  29. RPM 檔案系統工作目錄 /usr/src/rpm/ 下之子目錄 RPMS 主要用途為何?
    Sol. 編譯打包成功後,完成的 rpm 檔案放置目錄。
  30. RPM 檔案系統工作目錄 /usr/src/rpm/ 下之子目錄 SOURCES 主要用途為何?
    Sol. 放置套件的原始碼,即 tarball 檔。
  31. RPM 檔案系統工作目錄 /usr/src/rpm/ 下之子目錄 SPECS 主要用途為何?
    Sol. 放置套件的規格檔 spec 檔案。
  32. RPM 檔案系統工作目錄 /usr/src/rpm/ 下之子目錄 SRPMS 主要用途為何?
    Sol. 編譯打包成功後,完成的 srpm 檔案放置目錄。
  33. 以 i586 硬體重建 RPM 檔案,產生之 rpm 套件放在那個目錄?
    Sol. /usr/src/rpm/RPMS/i586

  DYWANG_HOME