RPM vs SRPM
RPM 全名是『?RedHat Package Manager?』簡稱則為 RPM 啦!顧名思義,當初這個軟件管理的機制是由 Red Hat 這家公司發展出來的。 RPM 是以一種數據庫記錄的方式來將你所需要的軟件安裝到你的 Linux 系統的一套管理機制。
他最大的特點就是將你要安裝的軟件先編譯過, 并且打包成為 RPM 機制的包裝文件,透過包裝好的軟件里頭默認的數據庫記錄, 記錄這個軟件要安裝的時候必須具備的相依屬性軟件,當安裝在你的 Linux 主機時, RPM 會先依照軟件里頭的數據查詢 Linux 主機的相依屬性軟件是否滿足, 若滿足則予以安裝,若不滿足則不予安裝。那么安裝的時候就將該軟件的資訊整個寫入 RPM 的數據庫中,以便未來的查詢、驗證與反安裝!這樣一來的優點是:
但是這也造成些許的困擾。由於 RPM 文件是已經包裝好的數據,也就是說, 里面的數據已經都『編譯完成』了!所以,該軟件文件幾乎只能安裝在原本默認的硬件與操作系統版本中。?也就是說,你的主機系統環境必須要與當初創建這個軟件文件的主機環境相同才行! 舉例來說,rp-pppoe 這個 ADSL 撥接軟件,他必須要在 ppp 這個軟件存在的環境下才能進行安裝!如果你的主機并沒有 ppp 這個軟件,那么很抱歉,除非你先安裝 ppp 否則 rp-pppoe 就是不讓你安裝的 (當然你可以強制安裝,但是通常都會有點問題發生就是了!)。
所以,通常不同的 distribution 所發布的 RPM 文件,并不能用在其他的 distributions 上。舉例來說,Red Hat 發布的 RPM 文件,通常無法直接在 SuSE 上面進行安裝的。更有甚者,相同 distribution 的不同版本之間也無法互通,例如 CentOS 4.x 的 RPM 文件就無法直接套用在 CentOS 5.x !因此,這樣可以發現這些軟件管理機制的問題是:
那怎么辦?如果我真的想要安裝其他 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 | 不可 | 未編譯之原始碼 | 可 |
?
RPM軟件管理程序:rpm
? ? ? 1:安裝文件 rpm -ivh packge_name
? ? ? ? ? ? 參數
? ? ? ? ? ? ? ? ? -i: install的意思
? ? ? ? ? ? ? ? ? -v:查看更詳細的安裝信息畫面
? ? ? ? ? ? ? ? ? -h:以安裝信息欄顯示安裝的進度
? ? ? ? 2: 測試某個軟件是否可以被安裝到用戶的Linux環境當中,可找出是否有屬性依賴的問題。
? ? ? ? ? ? ? ? ?rpm -ivh packge_name --test
? ? ? ? ?3: RPM 文件升級 ??rpm -Uvh packge_name??rpm -Fvh packge_name
? ? ? ? ? ? ? ? ?-Uvh ?后面接的軟件如果沒有安裝,則直接安裝軟件,若后面的接的軟件有安裝過的舊版本,則系統自動更新至新版。
? ? ? ? ? ? ? ? ?-Fvh ?后面的接的軟件如果沒有安裝,則不安裝。 ? ? ?若后面的接的軟件有安裝過的舊版本,則系統自動更新至新版。
? ? ? ? 4:查詢
? ? ? ? ? ? ? ? ? ? ?RPM查詢時,其實就是查詢/var/lib/rpm/這個目錄下的數據庫文件。
? ? ? ? ? ? ? ? ? ? ? rpm查詢可用的選項有:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?rpm -a +軟件名稱
僅查詢,后面接的軟件名稱是否有安裝;? ? ? ? ? ? ? ? ? ? ? ? ? ? ?rpm -qa?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??列出所有的,已經安裝在本機 Linux 系統上面的所有軟件名稱;
? ? ? ? ? ? ? ? ? ? ? ? ? ?rpm -q[licdR] ?+ 已安裝的軟件名稱
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??-qi :列出該軟件的詳細資訊 (information),包含開發商、版本與說明等
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??-ql :列出該軟件所有的文件與目錄所在完整檔名 (list);如幫助文檔的位置,可執行的文件位置信息等等
-qc :列出該軟件的所有配置檔 (找出在 /etc/ 底下的檔名而已)-qd :列出該軟件的所有說明檔 (找出與 man 有關的文件而已)-qR :列出與該軟件有關的相依軟件所含的文件 (Required 的意思)? ? ? ? ? ? ? ? ? ? ? ? ? ?rpm -qf + 存在于系統上面的某個文件名
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?由后面接的文件名稱,找出該文件屬於哪一個已安裝的軟件;這個事文件名不是軟件名稱
? ? ? ? ? ? ? ? ? ? ? ? ? ?rpm -qp[licdR] + 未安裝的軟件對應的RPM文件
? ? ? ? ? ? ? ? ? ? ? ? ? 查詢某個 RPM 文件內含有的資訊,注意 -qp 后面接的所有參數以上面的說明一致。但用途僅在於找出?某個 RPM 文件內的資訊,而非已安裝的 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?軟件資訊!注意!
? ? ? ? ?在查詢的部分,所有的參數之前都需要加上 -q 才是所謂的查詢!查詢主要分為兩部分, 一個是查已安裝到系統上面的的軟件資訊,這部份的資訊都是由 /var/lib/rpm/ 所提供。另一個則是查某個 rpm 文件內容, 等於是由 RPM 文件內找出一些要寫入數據庫內的資訊就是了,這部份就得要使用 -qp (p 是 package 的意思)
? ? ? ?
? ? ? ? ? ? ?rpm卸載和重建數據庫
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 卸載就是用 -e即可。 ?rpm -e +軟件名稱
? ? ? ? ? ? ? ? ? ? 由于RPM文件經常會安裝、刪除、升級等,某些操作或許會導致RPM數據庫/var/lib/rpm內的文件損壞。如何恢復呢?可使用--rebuilddb這個參數
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?rpm --rebuilddb ? ?
?
?
?
?
?
?
?
?
?
? ? ? ? ? ? ? ??
?
?
?
轉載于:https://www.cnblogs.com/chenfei0801/p/3639418.html
總結
以上是生活随笔為你收集整理的RPM vs SRPM的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#全局键盘监听(Hook)
- 下一篇: [Objective-C]OC中字典基本