如轉載,請注明出處: http://blog.csdn.net/robinson_0612/archive/2009/10/08/4699969.aspx
?
?????? RPM全名是RedHat Package Manager,簡稱為RPM,又稱之為RPM軟件包管理器,使RedHat套件管理程序之一,類似于Windows控制面板中的添加刪除模塊,Windows添加刪除程序通過將安裝信息記錄在注冊表,以便于程序的更新,卸載。而RPM同樣有著類似的功能,用于linux下套件包的安裝與管理。
????? 一、RPM與SRPM簡介及功能
????? 1. RPM:RPM通過采用數據庫記錄的方式來將所需要的套件安裝到Linux系統中。RPM包的格式為*.rpm,RPM包為已經經過編譯且包裝完成的rpm文件,這是其最大的特點。與我們通用的軟件安裝類似,在安裝所需的套件之前,先根據套件中提供的安裝參數檢查該套件安裝所需的環境,如果系統的環境與套件中所要求的環境相一致(軟件包打包時的環境),則可以成功安裝,否則會提示報錯,或提示其安裝依賴屬性模塊,需預先安裝某某套件才可以再安裝該套件。成功安裝套件后,RPM套件管理器會將所安裝的套件包記錄到RPM數據庫中,以便后續的查詢、驗證、升級、卸載等。
????
??? ?2. SRPM:與RPM最大的特點相對應,SRPM就是包含了Source code的RPM,即SRPM提供的內容為源碼,當然也就沒有經過編譯。 同時SRPM也提供了參數配置文件(configure與makefile)。想必大家已經知道,它與RPM最大的差異是,在安裝套件時需要通過RPM管理器將要安裝的套件以RPM管理的方式進行編譯,根據系統環境修改參數配置文件,然后將編譯好的RPM安裝到Linux系統中。由此可以看出SRPM在編譯時修改了參數配置文件,無需與當時打包的環境一致,從而降低了對套件包所需的安裝環境。
???? 二、RPM,SRPM包的格式及其說明
???? 1.RMP與SRPM的格式通常為:
?????????? *.rpm???????? 如:compat-db-4.1.25-9.i386.rpm
??????????? *.src.rpm?? 如:compat-db-4.1.25-9.i386.src.rpm
??????? 按以上簡介可知,compat-db-4.1.25-9.i386.rpm為已經經過編譯的文件,compat-db-4.1.25-9.i386.src.rpm則為沒有經過編譯的文件,通常套件在發行之前,同時提供rpm及srpm文件。
??? 2. 關于文件中i386,i686的說明:
??????? i386指這個軟件包適用于intel 80386以上的所有x86平臺的計算機。
??????? i686指這個軟件包適用于intel 80686以上,即Pentinum II以后Intel 系列的x86平臺的計算機,K7以后等級的CPU。
??????? noarch指這個軟件包與硬件架構無關,可以通用。
??? 3. 套件的文件名及版本:
?????? ?如上述compat-db-4.1.25-9說明該套件的名稱為compat-db,4.1.25-9為版本信息及發布次數。
?
??? 三、RPM的查詢功能
???? 1. 格式:[root@localhost ~]# rpm -parameter package_name
???????? rpm的查詢路徑: /var/lib/rpm目錄下的數據庫文件。
???????? parameter說明:
???????? -q? : 列出package_name是否已安裝到系統中。
???????? -qa:查詢系統中安裝的所有的包。
??????? ?-ql :查詢package_name中所有文件的安裝路徑。
??????? ?-qi :列出package_name中的詳細信息,包括開發商,版本,說明等。
???????? -V? :若package_name被修改過,則將其列出。
???? 2. 以下我們以在RHEL5.4下安裝oracle 10g為例,通過查詢所需的軟件包來介紹rpm的查詢功能。
???????? Sample 1 :查詢某套件是否已安裝,如要查詢binutils-2.15.92.0.2-13.EL4是否已安裝,如下:
???????? [root@localhost ~]# rpm? -q binutils
???????? binutils-2.17.50.0.6-12.e15??????????????? --表明包binutils 已被成功安裝,且列出的版本號高于所要查詢的版本。
???????? [root@localhost ~]# rpm? -q compat-db
???????? package compat-db is not installed??? --表明包compat-db沒有被安裝到系統中
???????
???????? Sample 2 :查詢binutils-2.15.92.0.2-13.EL4的詳細信息:
???????? [root@localhost ~]# rpm? -qi binutils??????? --結果省略
??????
?????????Sapmle 3 :查詢binutils-2.15.92.0.2-13.EL4的所有目錄與文件:
???????? [root@localhost ~]# rpm? -ql binutils?????? --結果省略
?
??? 四、RPM的安裝卸載功能
???????? 通過RPM查詢功能我們可以得到某些軟件包是否已安裝到系統中以及列出其路徑,詳細信息等。對于那些沒有安裝到系統中,且由于相關程序的依賴性,需要將其安裝的系統中,我們同樣可以通過RPM來完成,格式同上所述,僅僅是給RPM不同的參數而已。當然也可以對其已安裝的軟件包進行升級或卸載。
???? 1. 安裝軟件包。同RPM查詢功能中介紹的格式一樣,僅僅將parameter改為 ivh 即可。ivh通常組合在一起使用,也可以分開使用。i代表install的意思,v則表示顯示更詳細的安裝信息,h表示顯示安裝進度。因此本人更傾向于同時使用上述三個參數。
???? Sample 1 :安裝我們前一節所述的不存在的compat-db包
???? [root@localhost ~]# rpm? -ivh compat-db-4.1.25-9????
???? 這里將安裝結果圖截屏供大家參考:
????? 可以到Google搜索該軟件包,也可以到以下網址下載: http://linuxsoft.cern.ch/cern/slc4X/i386/yum/os/repodata/repoview/compat-db-0-4.1.25-9.html
????? 當然也可以通過網址來安裝該軟件包,前提是你的Linux系統能正常連接到Internet。
????? 如:[root@localhost ~]# rpm? -ivh http://linuxsoft.cern.ch/cern/slc4X/i386/yum/os/compat-db-4.1.25-9.i386.rpm
????
???? Sample 2: 同時安裝多個軟件包,只要在參數ivh后面跟多個軟件包即可,請確保路徑可以正確找到所需的軟件包。
??? ?[root@localhost ~]# rpm? -ivh compat-db-4.1.25-9 compat-libstdc++-296-2.96-132.7.2
????
? ? 2. 更新與卸載軟件包
??????? 此處包括更新軟件包和卸載軟件包,下面分開敘述。
??????? 更新軟件包的情況,以下僅提供參數說明,命令格式規范同前所述:
?????? ?參數:-Fvh,對于已安裝的舊版軟件包,系統自動更新,對于沒有安裝后的后續軟件包系統則不會更新。
??????????????? ?-Uvh,對于已安裝的舊版軟件包,系統自動更新,對于沒有安裝后的后續軟件包系統直接安裝。
?????? 卸載軟件包的情況,以下僅提供參數說明,命令格式規范同前所述:
?????? 參數:-e 卸載package_name中指定的軟件包。
????? ?注:關于SRPM的使用涉及到編譯的過程,在此不作敘述。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
