歡迎您光臨本站 註冊首頁

RHCE033--RPM包及其管理

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
    一、什麼是RPM RPM:RedHat Package Manager //紅帽包管理 如果Linux發行版本是redhat redflag centos fedora suse等或者衍生的版本, 那麼使用rpm進行軟體管理最適合了.通過rpm可以來對軟體進行安裝、升級、查詢、 驗證及卸載等.被rpm管理的軟體包稱之為「rpm包」,對於該軟體包的文件名包含了 很多有用信息,通常包含了軟體包的名稱、版本信息、操作系統信息、適應的硬體架構 等等,比如:httpd-2.2.3-22.el5.i386.rpm 2.2.3 是軟體的版本號,22是發行號,i386表示用於英特爾 x86平台 二、安裝RPM
  1. 安裝RPM

    軟體包 rpm命令使用-i(表示安裝)-v(顯示安裝過程)-h(使用#顯示進度條)組合一起使用 比如說安裝httpd-2.2.3-22.el5.i386.rpm該文件包: [root@51cto Server]# rpm -ivh httpd-2.2.3-22.el5.i386.rpm warning: httpd-2.2.3-22.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 Preparing... ########################################### [100%] 1:httpd ########################################### [100%] //可以看到該軟體包安裝成功,並且使用#顯示安裝過程
  2. --force選項與強制安裝 當安裝軟體包的時候,系統提示軟體包已經安裝,無法安裝同版本軟體的時候,有2 解決辦法:一是先卸載軟體包,然後重新安裝;而是使用--force選項強制安裝.如果 某個已經安裝的軟體出現文件丟失或者損壞的情況,使用--force安裝最好不過了. 現在依舊採用上面的方法重新安裝一遍httpd-2.2.3-22.el5.i386.rpm [root@51cto Server]#

    rpm -ivh httpd-2.2.3-22.el5.i386.rpm warning: httpd-2.2.3-22.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 Preparing... ########################################### [100%] package httpd-2.2.3-22.el5.i386 is already installed //系統提示說該軟體包已經安裝了 下面採用--force選項的方法強制安裝: [root@51cto Server]# rpm -ivh httpd-2.2.3-22.el5.i386.rpm --force warning: httpd-2.2.3-22.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 Preparing... ########################################### [100%] 1:httpd ########################################### [100%]
  3. --nodeps選項與依賴性 上面的方法使用--force可以強制覆蓋安裝,但是當軟體包出現依賴關係的時候,--force也解決不 了問題.rpm最大的不足就是包之間的依賴關係,比如要安裝A包,提示說要先安裝B包,找到 B包安裝又提示要先安裝其他包.所以當實在無法解決依賴性的問題又必須安裝軟體包的時候,

    可以使用--nodeps加以解決,比如安裝devhelp-devel-0.12-20.el5.i386.rpm [root@51cto Server]# rpm -ivh devhelp-devel-0.12-20.el5.i386.rpm warning: devhelp-devel-0.12-20.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 error: Failed dependencies: devhelp = 0.12 is needed by devhelp-devel-0.12-20.el5.i386 gnome-vfs2-devel >= 2.2.0 is needed by devhelp-devel-0.12-20.el5.i386 gtk2-devel >= 2.2.0 is needed by devhelp-devel-0.12-20.el5.i386 libdevhelp-1.so.0 is needed by devhelp-devel-0.12-20.el5.i386 libgnomeui-devel >= 2.2.0 is needed by devhelp-devel-0.12-20.el5.i386 libwnck-devel >= 2.10.0 is needed by devhelp-devel-0.12-20.el5.i386 //發現依賴包這麼多,使用--nodeps忽略依賴包直接安裝 [root@51cto Server]# rpm -ivh devhelp-devel-0.12-20.el5.i386.rpm --nodeps warning: devhelp-devel-0.12-20.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 Preparing... ########################################### [100%] 1:devhelp-devel ########################################### [100%] //安裝好了,當實際上該軟體包的依賴沒解決是無法正常使用的,所以最好把依賴關係解決
  4. 批量安裝或升級軟體包 使用通配符*就可以進行批量的安裝軟體包,如安裝telnet開頭的軟體包 [root@51cto Server]# rpm -ivh telnet-* --force warning: telnet-0.17-39.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 Preparing... ########################################### [100%] 1:telnet-server ########################################### [ 50%] 2:telnet ########################################### [100%] 對於升級軟體包則使用-U選項,表示有比已安裝的軟體包更高版本就升級安裝,如果系統本 沒有這些軟體包則安裝之,若版本相同則不做處理 三、查詢rpm軟體包
  5. rpm -qa 命令用於查詢系統中已安裝的軟體包 [root@51cto Server]# rpm -qa //這麼查詢列出的軟體包很多 如果要具體查詢某個軟體包可以使用grep,比如查詢是否安裝了LinuxQQ [root@51cto Server]#

    rpm -qa |grep linuxqq linuxqq-v1.0.2-beta1 //可以看到已經安裝了測試版QQ
  6. 查詢軟體的相關信息,使用-i選項 [root@51cto Server]# rpm -qi linuxqq Name : linuxqq Relocations: (not relocatable) Version : v1.0.2 Vendor: Tencent Inc. Release : beta1 Build Date: 2009年01月05日 星期一 01時31分44秒 Install Date: 2010年09月29日 星期三 05時16分12秒 Build Host: localhost.localdomain Group : Internet Source RPM: linuxqq-v1.0.2-beta1.src.rpm Size : 6346491 License: Commercial Signature : (none) Packager : @Home Summary : QQ for Linux v1.0.2 Beta1 Description : QQ - The most popular free instant messaging program in China. * Chat with more than 590,000,000 people all over the world. * Free to download or distribute absolutely.

  7. 查詢軟體文件的安裝位置,使用-l選項 [root@51cto Server]# rpm -ql linuxqq /usr /usr/bin /usr/bin/qq /usr/share /usr/share/applications /usr/share/applications/qq.desktop /usr/share/tencent /usr/share/tencent/qq /usr/share/tencent/qq/qq /usr/share/tencent/qq/qq.png /usr/share/tencent/qq/res.db
  8. 查詢文件歸屬,使用-f選項 rpm -qf 後面跟要查詢的文件名,可以查詢該文件屬於哪個軟體包.所以當某個文件丟失 或者損壞的時候.就可以查詢所屬軟體包,然後重新安裝,即可恢復. [root@51cto Server]# rpm -qf /usr/share/tencent //假如此文件損壞了 linuxqq-v1.0.2-beta1 //可以查詢出所屬的軟體包是Linuxqq 四、驗證rpm軟體包的完整性 rpm命令可以使用-V選項對系統中已經安裝的軟體包進行驗證,比如系統發生安全故障,對

    軟體包進行驗證是必不可少的事情,比如: [root@51cto ~]# mv /usr/share/tencent/qq/qq /usr/share/tencent/qq/qq.backup //把/usr/share/tencent/qq/qq重命名成備份文件 [root@51cto ~]# rpm -V linuxqq //查詢該文件包完整性 missing /usr/share/tencent/qq/qq //顯示丟失了/usr/share/tencent/qq/qq [root@51cto ~]# mv /usr/share/tencent/qq/qq.backup /usr/share/tencent/qq/qq//恢復 [root@51cto ~]# rpm -V linuxqq //查詢該文件包完整性,無顯示丟失文件 五、卸載軟體包 使用-e選項來卸載軟體包,rpm -e 軟體名 (軟體名可以包含版本信息,但不可以有rpm後綴) [root@51cto ~]# rpm -e linuxqq [root@51cto ~]# rpm -ql linuxqq package linuxqq is not installed //卸載Linuxqq成功 如果卸載軟體包的時候遇到依賴關係的時候也可以使用

    --nodeps忽略依賴關係卸載 (如果使用GNOME/KDE環境,這就不做介紹了) 六、管理rpm源碼包 對於一些軟體包是以.src.rpm為擴展名的,這類軟體包就是包含了源代碼的rpm包,在安裝 的時候需要進行編譯,步驟如下:
  9. 執行rpm -i 51cto.src.rpm (假設軟體包名為51cto
  10. cd /usr/src/redhat/SPECS/ //切換到該目錄
  11. rpmbuild -bb 51cto.specs 或者

    rpmbuild -bp 51cto.specs 如果是如上的第一條命令,在/usr/src/redhat/RPMS/noarch/目錄下生成一個新的rpm包, 直接使用rpm -ivh xx.rpm 進行安裝搞定;(推薦這種) 如果是如上的第二條命令,在/usr/src/redhat/BUILD/software/目錄下生成此軟體包 的源碼包,可能通過腳本安裝或編譯源代碼安裝,具體不做說明 備註:對於yum安裝軟體包和通過源代碼安裝軟體包的內容放在進階二說明

本文出自 「twenty_four」 博客,請務必保留此出處http://twentyfour.blog.51cto.com/945260/400263


[火星人 ] RHCE033--RPM包及其管理已經有480次圍觀

http://coctec.com/docs/linux/show-post-49490.html