RPM的全名“RedHat Package Manager”,當初這個是RedHad公司開發的一款程序包管理套件,隨著RPM的不斷完善,RPM逐漸成為眾多linux發行版程序包管理器的代名詞,那什麼是RPM,為什麼會用到RPM這個程序包管理工具那,接下來我一一揭曉。
RPM是以一種數據庫記錄的方式將所需要的軟件安裝到linux主機的一套管理程序,最大的特點就是將需要的軟件先編譯並打包,通過包裝好的套件中默認的數據庫記錄,來記錄這個套件在安裝的時候需要依賴的屬性模塊。知道是RPM是什麼,那我們為什麼需要它那,第一它幫我們解決的重新編譯的麻煩,早期的linux安裝軟件是需要自己下載源代碼,進行編譯,這對於普通用戶來說是一個非常耗時耗力的工作,第二由於他在安裝的時候把眾多的安裝信息記錄在了RPM的數據庫裡面,所以我們很方面的可以查詢、升級、卸載我們的安裝包,所以RPM將是我們系統管理工作當然必不可少的一個工具。
linux發行版本眾多,下面我們以CentOS6.7為例了解rpm程序包管理器,前面講解了那麼多RPM的內容,那麼究竟rpm是什麼那?其實可以理解為一個工具,也可以理解為有著眾多選項的一個命令,能幫助我們實現程序包的安裝、升級、卸載、查詢和校驗。首先介紹一下rpm命令的使用方法:
安裝:
使用方法:rpm {-i|–install}[install-options] PACKGE_FILE…
安裝常用選項:
-i|–install:安裝程序包的意思
-v:顯示安裝過程中的詳細信息
-h:以#來顯示安裝的過程
–test:測試安裝,而不執行真正的安裝過程
–replacepkgs:覆蓋安裝,重新安裝並覆蓋原有的文件
–force:強制安裝
–nodeps:忽略依賴關系
升級:
使用方法:rpm {-i|–install}[install-options] PACKGE_FILE…
卸載常用選項:
-u:升級或者安裝程序
-F:純升級程序包
–test:測試升級,而不執行真正的升級過程
–force:強制安裝
–nodeps:忽略依賴關系
–oldpackage:降級到舊版本
卸載:
使用方法:rpm [-e|–erase] PACKAGE_NAME
常用選項:
–allmatches:全部卸載
–nodeps:忽略依賴關系卸載
–test:測試卸載,而不執行真正的卸載過程
查詢:
使用方法:rpm {-q|–query} [select-options] [query-options] PACKAGE_NAME
常用選項:
-q:查詢某程序包是否安裝
-qa:查詢所有已經安裝的程序包
-qf:查詢某文件是由那個程序包安裝生成
-qi:查詢某程序包的簡要信息
-ql:查詢某程序包安裝後生成的文件列表
-qc:查詢某程序包安裝包生成的文檔
校驗:
使用方法:rpm {-V|–verify} [select-options] [verify-options]
常用選項:
-V:查詢程序包安裝之後生成的文件是否發生了改變
–improt:驗證其光盤中程序包的來源及完整性
注意:程序包的合法性驗證主要包括驗證程序包的來源合法以及程序包的內容合法兩個方面,而程序包的來源是否合法,是驗證該程序包是否有信任的制作者提供,檢測的是原作者的數字簽名,而程序包的內容是否合法,主要依賴於制作者提供的程序特征碼,使用者通過使用同樣的程序特征碼提取算法提取程序包的特征碼,並與原作者提供的相比較來驗證是否合法。
前面曾經提到RPM是通過以一種數據庫記錄的方式將所需要的軟件安裝的方式,所以我們還可以通過rpm管理器進行數據庫重建,
當rpm數據庫不存在或者需要初始化時可以使用:rpm –initdb
重建rpm數據庫即無論數據庫存在與否,都會直接重建可以使用:rpm –rebuilddb
RPM文件本身是已經編譯過的二進制文件,可以讓用戶免去重新編譯的麻煩,而且在安裝之前,RPM會檢測系統的硬盤容量、操作系統的系統版本等,以避免安裝錯誤,同時RPM本身也提供套件版本的信息、相關套件名稱,套件用途說明等信息,用著眾多的優點,但是我們也應該認識到RPM的不足,由於RPM文件本身已經是編譯好的二進制文件,所以RPM包在安裝時無法選定該軟件的某些特性,同時RPM也只能通過手動來解決各軟件包之間的依賴性關系,由於這些不足,也催生了SRPM和yum,SRPM的擴展名是以*.src.rpm格式命名,很明顯他提供了源代碼,而yum則是以RPM為基礎包,提供一個rpm的前端工具,自行解決依賴關系的一個工具,這樣就很好的解決了軟件直接依賴性的問題,欲知後事如何,且聽下回分解。