RPM 概述
RPM 是一個開放的軟件包管理系統,最初的全稱是 Red Hat Package Manager。它工作於 Red Hat Linux 以及其它 Linux 系統,成爲了 Linux 中公認的軟件包管理標準。紅帽子軟件公司鼓勵其他廠商來了解 RPM 並在自己的產品中使用它。
RPM 的發佈基於 GPL 協議。隨着 RPM 在各種發行版本的廣泛使用,如今 RPM 的全稱是 RPM Package Manager。RPM 由 RPM 社區負責維護,其官方網站:http://www.rpm.org
爲什麼使用 RPM
使用 RPM 最大的好處在於它提供快速之安裝,減少編譯安裝之偵錯困擾。對於最終用戶來說,RPM 所提供的衆多功能使維護系統要比以往容易的多。安裝、卸載和升級 RPM 軟件包均只需一條命令即可完成, 所有煩瑣的細節問題無須您費心。RPM 維護一個所有已安裝的軟件包和文件的數據庫,可以讓您進行功能強大的軟件包查詢和驗證工作。
在軟件包升級過程中,RPM 會對配置文件進行特別處理,因此您絕對不會丟失以往的定製信息——這對於直接使用.tar.gz 文件是不可能的。對於程序員,RPM 可以讓您連同軟件的源代碼打包成源代碼和二進制軟件包供最終用戶使用。這個過程十分簡單,整個過程由一個主文件和可能的補丁程序組成。RPM 在軟件的新版本發佈時,這種“原始”源代碼,補丁程序和軟件生成指令的清晰描述簡化了軟件包的維護工作。
RPM 的功能
簡言之,RPM 具有如下五大功能:
*安裝——將軟件從包中解出來,並且安裝到硬盤。
*卸載——將軟件從硬盤清除。
*升級——替換軟件的舊版本。
*查詢——查詢軟件包的信息。
*驗證——檢驗系統中的軟件與包中軟件的區別。
RPM 包的名稱格式
RPM 包的名稱有其特有的格式,如某軟件的 RPM 包名稱由如下部分組成:
name-version.type.rpm
其中:
*name 爲軟件的名稱
*version 爲軟件的版本號
*type 爲包的類型
*i[3456]86:表示在 Intel x86 計算機平臺上編譯的
*sparc:表示在 sparc 計算機平臺上編譯的
*alpha:表示在 alpha 計算機平臺上編譯的
*src:表示軟件源代碼
*rpm 爲文件擴展名例如:
bind-9.2.1-16.i386.rpm:是 bind(9.2.1-16)的 Intel 386 平臺編譯版本包bind-9.2.1-16.sparc.rpm:是 bind(9.2.1-16)的 sparc 平臺編譯版本包bind-9.2.1-16.alpha.rpm:是 bind(9.2.1-16)的 alpha 平臺編譯版本包bind-9.2.1-16.src.rpm:是 bind(9.2.1-16)的源代碼版本包
因此,看到一個 RPM 包的文件名之後就可以獲得該軟件包的大致信息了。
rpm 命令的使用
rpm 命令簡介
在 CentOS 中升級和安裝系統通常使用 yum 命令,因爲它可以良好的解決包的依賴性問題,即自動安裝/ 處理依賴的其他軟件包。但是 rpm 命令還是在某些情況下用得上,比如,查詢包信息,安裝或卸載一個不在 CentOS 軟件庫中的.rpm 包等。
常見的用法: 命令 說明
rpm -i <.rpm file name> 安裝指定的 .rpm 文件
rpm -U <.rpm file name> 用指定的.rpm 文件升級同名包
rpm -e 刪除指定的軟件包
rpm -q 查詢指定的軟件包在系統中是否安裝
rpm -qa 查詢系統中安裝的所有 RPM 軟件包
rpm -qf </path/to/file> 查詢系統中指定文件所屬的軟件包
rpm -qi 查詢一個已安裝軟件包的描述信息 rpm -ql 查詢一個已安裝軟件包裏所包含的文件rpm -qc 查看一個已安裝軟件包的配置文件位置
rpm -qpi <.rpm file name> 查詢一個未安裝的 RPM 文件的描述信息 rpm -qpl <.rpm file name> 查詢一個未安裝的 RPM 文件裏所包含的文件rpm -qpc <.rpm file name> 查看一個未安裝的 RPM 文件的配置文件位置rpm -qpd <.rpm file name> 查看一個未安裝的 RPM 文件的文檔安裝位置rpm -qpR <.rpm file name> 查詢一個未安裝的 RPM 文件的最低依賴要求rpm -V 校驗指定的軟件包
rpm -V </path/to/file> 校驗包含指定文件的軟件包
rpm -Vp <.rpm file name> 校驗指定的未安裝的 RPM 文件
rpm -Va 校驗所有已安裝的軟件包
rpm --rebuilddb 重新創建系統的 RPM 數據庫,用於不能安裝和查詢的情況
rpm --import 導入指定的簽名文件
rpm -Kv --nosignature <.rpm file name> 檢查指定的 RPM 文件是否已損壞或被惡意篡改(驗證包的 MD5
校驗和)
rpm -K <.rpm file name> 檢查指定 RPM 文件的 GnuPG 簽名rpm -qd 查看一個已安裝軟件包的文檔安裝位置rpm -qR 查詢一個已安裝軟件包的最低依賴要求
*在安裝/升級時,還可以使用-vh 參數,其中:v 表示在安裝過程中將顯示較詳細的信息;h 表示顯示水平進度條
*在使用 rpm -qa 命令時,還可以使用 |more 或 |grep 進行過濾
*所有的 <.rpm file nam e > 既可以是本地文件,也可以是遠程文件
*校驗軟件包將檢查軟件包中的所有文件是否與系統中所安裝的一致性。包括校驗碼文件大小,存取 權限和屬主屬性都
*將根據數據庫進行校驗。該操作可在用戶安裝了新程序以後懷疑某些文件遭到破壞時使用。
rpm 命令使用舉例
安裝軟件包:
1、安裝本地軟件包
升級軟件包:
1、從本地文件升級軟件包:
rpm -Uvh vsftpd-2.0.5-16.el5_4.1.i386.rpm Preparing...
卸載軟件包:
rpm -e vsftpd
查詢軟件包:
查詢 vsftpd 軟件包在系統中是否安裝
$ rpm –q vsftpd
查詢系統中已安裝的 vsftpd 軟件包的描述信息
$ rpm –qi vsftpd
查詢系統中已安裝的 vsftpd 軟件包裏所包含的文件
$ rpm –ql vsftpd
查詢系統中文件 /etc/vsftpd/vsftpd.conf 所屬的軟件包
$ rpm –qf /etc/vsftpd/vsftpd.conf
查詢 vsftpd-2.0.5-16.el5_4.1.i386.rpm 包文件中的信息
$ rpm –qp vsftpd-2.0.5-16.el5_4.1.i386.rpm
查詢系統中已經安裝的所有包含名字 vsftpd 的軟件包
$ rpm –qa | grep vsftpd
查詢 httpd 包的最低依賴要求
$ rpm -qR httpd
驗證軟件包:
// 驗證 vsftpd 軟件包
rpm –V vsftpd
// 驗證包含文件 /etc/passwd 的軟件包
rpm –Vf /etc/passwd
// 驗證 vsftpd-2.0.5-16.el5_4.1.i386.rpm 包文件
rpm –Vp vsftpd-2.0.5-16.el5_4.1.i386.rpm
// 驗證所有已安裝的軟件包
rpm –Va
如果校驗一切正常,將沒有輸出,反之則輸出不一致結果,格式爲:
xxxxxxxx 文件名
字段 1 由八個字符組成,每個字符指明該文件與 RPM 數據庫中一致或不一致的地方,單個點(.)說明沒有異常,具體含義如下:
*5 — 校驗和
*S — 文件大小
*L — 符合連接
*T — 文件修改時間
*D — 設備
*U — 用戶
*G — 組
*M — 文件模式
*? — 文件不可讀