精做高難度防水抓漏/壁癌/油漆等工程
責任施工、合約保固!
保險專業鋁門窗、鍛造門設計及安裝
價格便宜、品質好、設計佳,值得您信賴

首頁  •  j2h 論壇 • 軟體討論     • 

[教學]Linux 的RPM 與 binary 的差別和安裝方法簡介

房東:阿緯
發表時間:2015-01-06



  • 問:RPM 與 binary 的安裝方法簡介



  • 答:


    今天有個網友問了我一個問題,他說不曉得 .gz 與 .rpm 檔案的安裝方法有什麼需要注意的地方,並且,他也不曉得應該如何處理具有屬性相依問題的 rpm 檔案。我想,這個問題大概很多人都有類似的經驗,那小弟就將比較需要注意的地方寫上來一下,提供個人經驗,如果有疏漏的地方,還望大家指教。

    在安裝RedHat或者是其他相關版本的 Linux 時,最討厭的地方就是在 rpm 的相依屬性了,這是因為rpm當初在製作封包的時候,主要是針對某一個特定的系統來進行的,因此,如果你上過 Red Hat 的網站的話,那你就會發現,同一個套件在不同版本的 Red Hat 竟然就需要使用不同的 rpm 檔案!也就是說,如果你的系統與當初製作rpm封包的那個系統不相同的話,那就非常容易出現相依檔案找不到的窘境!而如果要一個一個的安裝好所有的相依檔案,那是非常頭痛的一件事,因此,通常我都是建議就直接使用 binary 的方法安裝即可!


    這裡先說一下幾個觀念:





    1. rpm 是某些高手(或廠商)針對某一個特定系統所製作的軟體套件封包,所以,除非你的系統與該製作者相同,否則就很容易出現無法順利安裝的情況,這種類型的檔案附檔名通常為 ***.rpm;

    2. binary 檔案:這是軟體開發商寫的,因為該軟體預設是適合於所有的系統,所以使用 binary 的方式安裝幾乎是一定可以成功的,這種檔案附檔名通常為 .gz(壓縮檔)!




    那為何不直接使用 binary 就好呢?使用 rpm 不是很麻煩嗎?!這是因為 rpm 檔案在移除與資訊管理上較為便利之故,所以,有些特定人士就很喜歡使用 rpm 來安裝套件(例如輸入rpm -q apache 就可以知道你的 apache 版本了,這樣一來會比較容易瞭解你的系統狀況,尤其是在 server 移交給下一任網管人員的時候,rpm 可就有用的很囉)。


    那要如何安裝 .gz 的檔案呢?通常是解壓縮之後(通常是使用 tar -zxvf *.tar.gz),在產生的目錄中觀察一下 INSTALL 或者是 README 等檔案,應該就可以瞭解安裝的步驟了!通常的安裝步驟是:


    ./configure (在檢視你的系統並製作安裝參數檔案,如 config.h 或 Makefile 等檔案)

    make clean (清除前一次安裝的編譯檔)

    make (開始以你的系統來編譯)

    make install (將編譯完成的咚咚安裝到你的系統)


    大致上就是這樣了。


    那如果我就是要使用 RPM 安裝有相依屬性問題的軟體呢?那大概就只有兩個方法了:





    1. 到各主要的 FTP 系載網站下載每一個相依套件的軟體來一步一步安裝!

    2. 不管三七二十一,直接以 rpm -ivh --nodeps ***.rpm 來安裝,這個 --nodeps 就是不管相依屬性的意思!不過,這種安裝的方法會有什麼困擾?!那就不曉得囉!






  • 贊助網站       

    優潔清潔公司
    夏季清潔讓您煥然一新,專業清潔團隊,寶貝家具不受損,輕鬆擁有乾淨居家,守護您的健康環境
    TECHNIQUE冷氣空調規劃
    冷氣界的達人,多重售後服務保障,專業熱忱技術,多戶家庭一致推薦
    DRAPERY窗簾設計
    捲簾、窗簾布、窗簾布多種款式,免費丈量,挑戰市場超低價,為家輕鬆增添新意

  • 1 樓住戶:小胖
    發表時間:2015-01-06

    什麼是 RPM 與 SRPM


    RPM 全名是『 RedHat Package Manager 』簡稱則為 RPM 啦!顧名思義,當初這個軟體管理的機制是由 Red Hat 這家公司發展出來的。 RPM 是以一種資料庫記錄的方式來將你所需要的軟體安裝到你的 Linux 系統的一套管理機制。


    他最大的特點就是將你要安裝的軟體先編譯過, 並且打包成為 RPM 機制的包裝檔案,透過包裝好的軟體裡頭預設的資料庫記錄, 記錄這個軟體要安裝的時候必須具備的相依屬性軟體,當安裝在你的 Linux 主機時, RPM 會先依照軟體裡頭的資料查詢 Linux 主機的相依屬性軟體是否滿足, 若滿足則予以安裝,若不滿足則不予安裝。那麼安裝的時候就將該軟體的資訊整個寫入 RPM 的資料庫中,以便未來的查詢、驗證與反安裝!這樣一來的優點是:



    1. 由於已經編譯完成並且打包完畢,所以軟體傳輸與安裝上很方便 (不需要再重新編譯);

    2. 由於軟體的資訊都已經記錄在 Linux 主機的資料庫上,很方便查詢、升級與反安裝


    但是這也造成些許的困擾。由於 RPM 檔案是已經包裝好的資料,也就是說, 裡面的資料已經都『編譯完成』了!所以,該軟體檔案幾乎只能安裝在原本預設的硬體與作業系統版本中。 也就是說,妳的主機系統環境必須要與當初建立這個軟體檔案的主機環境相同才行! 舉例來說,rp-pppoe 這個 ADSL 撥接軟體,他必須要在 ppp 這個軟體存在的環境下才能進行安裝!如果你的主機並沒有 ppp 這個軟體,那麼很抱歉,除非你先安裝 ppp 否則 rp-pppoe 就是不讓你安裝的 (當然你可以強制安裝,但是通常都會有點問題發生就是了!)。


    所以,通常不同的 distribution 所釋出的 RPM 檔案,並不能用在其他的 distributions 上。舉例來說,Red Hat 釋出的 RPM 檔案,通常無法直接在 SuSE 上面進行安裝的。更有甚者,相同 distribution 的不同版本之間也無法互通,例如 CentOS 4.x 的 RPM 檔案就無法直接套用在 CentOS 5.x !因此,這樣可以發現這些軟體管理機制的問題是:



    1. 軟體檔案安裝的環境必須與打包時的環境需求一致或相當;

    2. 需要滿足軟體的相依屬性需求;

    3. 反安裝時需要特別小心,最底層的軟體不可先移除,否則可能造成整個系統的問題!


    那怎麼辦?如果我真的想要安裝其他 distributions 提供的好用的 RPM 軟體檔案時? 呵呵!還好,還有 SRPM 這個東西!SRPM 是什麼呢?顧名思義,他是 Source RPM 的意思,也就是這個 RPM 檔案裡面含有原始碼哩!特別注意的是,這個 SRPM 所提供的軟體內容『並沒有經過編譯』, 他提供的是原始碼喔!


    通常 SRPM 的副檔名是以 ***.src.rpm 這種格式來命名的。不過,既然 SRPM 提供的是原始碼,那麼為什麼我們不使用 Tarball 直接來安裝就好了?這是因為 SRPM 雖然內容是原始碼, 但是他仍然含有該軟體所需要的相依性軟體說明、以及所有 RPM 檔案所提供的資料。同時,他與 RPM 不同的是,他也提供了參數設定檔 (就是 configure 與 makefile)。所以,如果我們下載的是 SRPM ,那麼要安裝該軟體時,你就必須要:



    • 先將該軟體以 RPM 管理的方式編譯,此時 SRPM 會被編譯成為 RPM 檔案;

    • 然後將編譯完成的 RPM 檔案安裝到 Linux 系統當中


    怪了,怎麼 SRPM 這麼麻煩吶!還要重新編譯一次,那麼我們直接使用 RPM 來安裝不就好了?通常一個軟體在釋出的時候,都會同時釋出該軟體的 RPM 與 SRPM 。我們現在知道 RPM 檔案必須要在相同的 Linux 環境下才能夠安裝,而 SRPM 既然是原始碼的格式,自然我們就可以透過修改 SRPM 內的參數設定檔,然後重新編譯產生能適合我們 Linux 環境的 RPM 檔案,如此一來,不就可以將該軟體安裝到我們的系統當中,而不必與原作者打包的 Linux 環境相同了?這就是 SRPM 的用處了!


























    檔案格式 檔名格式 直接安裝與否 內含程式類型 可否修改參數並編譯
    RPM xxx.rpm 可 已編譯 不可
    SRPM xxx.src.rpm 不可 未編譯之原始碼 可

    Tips:

    為何說 CentOS 是『社群維護的企業版』呢? Red Hat 公司的 RHEL 釋出後,連帶會將 SRPM 釋出。 社群的朋友就將這些 SRPM 收集起來並重新編譯成為所需要的軟體,再重複釋出成為 CentOS,所以才能號稱與 Red Hat 的 RHEL 企業版同步啊!真要感謝 SRPM 哩!如果妳想要理解 CentOS 是如何編譯一支程式的, 也能夠透過學習 SRPM 內含的編譯參數,來學習的啊!





     共 1 人回應  選擇頁數 【第1 頁】 

    姓名:
    佈告內容:
    其他選項: