天天看點

RPM及其rpm指令詳解

    Linux原本隻是一個kernel,但是為什麼我們今天用的linux系統,會有很強大的功能呢,這是因為在kernel的基礎上,發行商給我們安裝了很多軟體包,使linux系統具有了豐富的功能。

   Linux界軟體安裝的的兩大主流是:RPM和dpkg。dpkg最早是由Debian Linux社群開發的,RPM(Redhat Package Manager)是由redhat公司開發的,而包括Fedora,CentOS,SuSE等大的發行商都使用RPM。我們知道最初那些軟體包都是程式員用C語言或其他語言寫出來,需要經過編譯才能在我們的PC機的Linux系統上運作,如果我們每用到一個程式,就需要下載下傳源碼包,然後自己編譯(有的大程式編譯時間是非常長的),安裝,并且大多時候會出現依賴性的問題,這樣非常有局限性,并且非常麻煩。而RPM解決了我們這個問題,它是已經編譯完成的程式和設定檔案打包為RPM格式的包,并且軟體包中會提供軟體包依賴屬性等的相關詳細資訊。RPM包用rpm指令安裝的時候首先會檢測它安裝所要依賴的包是否已安裝。如果,這個軟體包所依賴的軟體包不存在,則會停止安裝,給出提示資訊讓安裝其所依賴的包。如果已經安裝,則正常安裝,并在安裝的時候将該軟體的資訊整個寫入RPM的資料庫中,便于未來的查詢,驗證和安裝。

    RPM和rpm一樣嗎?是不是看的有點暈呀!RPM全稱是Redhat Package Manager即redhat軟體包管理工具,而rpm是RPM的中的一個指令,隻有root使用者才能使用,用于軟體包的安裝,查詢和更新等。

    軟體包一般由四個部分組成:

    1,二進制檔案  一般放

在:/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin中

    2,配置檔案    一般放在:/etc,/usr/local/etc中

    3,庫檔案      一般放在:/lib,/usr/lib,/usr/local/lib中

    4,文檔        一般放在/usr/share/docs,/usr/share/man中

    軟體包的安裝方式有兩種:

    1,手動編譯安裝源代碼包

    2,直接安裝二進制格式的軟體包

    這裡我們隻說第二種,并且是能用rpm指令安裝的RPM包。

    rpm包的格式為:

    name-version-release.arch.rmp

    name:就是軟體包的名字

    version:軟體包的版本号,一般由三位組成,分别為主版本号-次版本号-修正号。

    release:發行号

    arch:支援的硬體平台,一般有:

    i386:支援幾乎所有的x86的CPU平台

    i586:如P-I MMX CPU及AMD的K5,K6系列等。

    i686:P-II以後的Intel系列

    X86_64:支援64位的cpu,如Intel core2以上及AMD的Athlon64以後的cpu

    noarch:表示沒有硬體平台的限制;

    RPM工具中的rpm指令:

    (注意:

      1,下面内容我們以:httpd-2.2.3-31.el5.i386.rpm為例,有的選項隻用包的名字就行了,即這個包中的httpd,全格式反而錯誤;

      2,指定這個封包件時必須是絕對路徑,由于我已經切換到CD光牒中Server目錄中,而httpd這個檔案在這個目錄中,故不需要指定路徑了)

    rpm常用選項有:

    -v 執行的時候顯示詳細資訊

    -h 執行的時候顯示進度條

    1,安裝

    rpm

    -i  表示安裝

    -nodeps 忽略包之間的依賴關系安裝,即使安裝成功,有可能不能用

    --force 強行安裝,即使安裝成功,有可能不能用

    例:rpm -ivh httpd-2.2.3-31.el5.i386.rpm (必須是全格式的包名)

    2,解除安裝

    -e 解除安裝

    -nodeps 忽略依賴關系強行解除安裝

    --force 強制解除安裝

    例:rpm -evh httpd 

    3,更新

    -U 如果要更新的老版本不存在,則重新安裝這個新包;如果存在,則對此進行更新

    -F 隻有要更新的老版本存在才更新

    例:rpm -Uvh httpd-2.2.3-31.el5.i386.rpm(必須是全格式的包名)

    4,查詢

    -q 查詢軟體包(查詢是支援golobing方式的檔案名通配)

    例:rpm -q httpd 查詢這個軟體包是否安裝

    -qa 查詢所有已經安裝的包

    -qi 顯示指定軟體包的摘要資訊(例如軟體包的安裝時間,編譯時間,大小等資訊)

    例:rpm -qi httpd

    -qR 顯示已安裝的軟體包的依賴包

    例:rpm -qR httpd-2.2.3-31.el5.i386.rpm

    -qRp 顯示本地rpm軟體包的依賴包

    例:rpm -qRp httpd-2.2.3-31.el5.i386.rpm

    -ql 顯示這個軟體包安裝之後生成了哪些檔案

    例:rpm -ql httpd

    -qc 顯示這個軟體包安裝之後生成了哪些配置檔案

    例:rpm -qc httpd

    -qd 顯示這個軟體包安裝之後生成了哪些文檔檔案

    例:rpm -qd http

    -q --scripts  顯示這個軟體包安裝時所執行的腳本

    例:rpm -q --scripts httpd

    -qf filename 顯示這個檔案由哪個軟體包生成的

    例:rpm -qf /etc/profile

    -q --changelog 顯示這個軟體包每次制作都添加了哪些功能

    例:rpm -q --changelog httpd

    -p 查詢一個未安裝的本地存在的rpm包的相關資訊

    例:rpm -qpl httpd-2.2.3-31.el5.i386.rpm  rpm -qpR httpd-2.2.3-31.el5.i386.rpm

    5,校驗

    rpm 

    -V 校驗這個軟體包所生成的檔案是否被改動過,如果被改動就會顯示出來

    -Va 列出系統上所有可能被修改過的檔案

<a href="http://blog.51cto.com/attachment/201202/131726758.jpg" target="_blank"></a>

    如圖所示:

    紅線劃的資訊依次為:(如果這一項沒有改動,則用&amp;ldquo;.&amp;rdquo;顯示)

    S:檔案的大小是否被改變

    M:檔案的類型或檔案的屬性(rwx)是否改變

    5:MD5碼的内容已經修改過

    D:裝置的主次代号已經改變

    L:連結路徑已經改變

    U:檔案的所有者發生改變

    G:檔案的屬組已經改變

    T:檔案的修改時間變化

    黃線劃的資訊是指定檔案的類型,有:

    c:表示此檔案為配置檔案

    d:表示此檔案為配置檔案

    g:&amp;ldquo;鬼&amp;rdquo;檔案,即該檔案不被某個軟體包所包含

    l:表示此檔案為授權檔案 

    r:表示此檔案為自述檔案  

    藍線表示這個軟體包生成的被改變動過的檔案

本文轉自 leejia1989 51CTO部落格,原文連結:http://blog.51cto.com/leejia/787626,如需轉載請自行聯系原作者

繼續閱讀