RPM的使用

概述

RPM 是 Red Hat PackageManager 的縮寫,本意是Red Hat 軟件包管理,顧名思義是Red Hat 貢獻出來的軟件包管理;在Fedora 、Redhat、Mandriva、SuSE、YellowDog等主流發行版本,以及在這些版本基礎上二次開發出來的發行版采用;

RPM包里面都包含什么?里面包含可執行的二進制程序,這個程序和Windows的軟件包中的.exe文件類似是可執行的;RPM包中還包括程序運行時所需要的文件,這也和Windows的軟件包類似,Windows的程序的運行,除了.exe文件以外,也有其它的文件;

一個RPM 包中的應用程序,有時除了自身所帶的附加文件保證其正常以外,還需要其它特定版本文件,這就是軟件包的依賴關系;依賴關系并不是Linux特有的,Windows操作系統中也是同樣存在的;比如我們在Windows系統中運行3D游戲,在安裝的時候,他可能會提示,要安裝Direct 9 ;Linux和Windows原理是差不多的。

一 命名格式

源代碼:name-VERSION.tar.gz

      VERSION: major.minor.release

例子:

        nginx-1.8.0.tar.gz

        1:是主版本號 

        8:是次版本號 

        0:是發行號

rpm包命名方式:

        name-VERSION-release.arch.rpm

        VERSION:major.minor.release

        release.arch:rpm包的發行號

        archetecture(架構或平臺):i386,x64(amd64), ppc, noarch

例子:

        bash-4.1.2-33.el6.x86_64

        4:是主版本號

        1:是次版本號

        2:修訂

        33:是第幾次發布版本

        el6:適用于RHEL6或兼容Centos6

        x86_64:CPU架構系統平臺

        el6 :enterprice linux  6   RHEL 6或centos 6

        el5: rhel5

        

拆包:主包和支包

        主包:name-VERSION-release.arch.rpm

        支包:name-function-VERSION-release.arch.rpm

        function:devel(開發), utils(工具程序), libs(庫文件), …

包之間存在依賴關系

比如說x包依賴Y包 但是Y包又依賴z包

前端工具:自動解決依賴關系;

        yum:rpm包管理器的前端工具;

        apt-get (apt-cache):deb包管理器的前端工具;

        zypper:suse的rpm管理器前端工具;

        dnf:Fedora 22+系統上rpm包管理器的前端工具;

        

二 程序包管理器的組成:

程序包管理:

功能:將編譯好的應用程序的各組成文件打包一個或幾個程序包文件,從而方便快捷地實現程序包的安裝、卸載、查詢、升級和校驗等管理操作;

1、程序的組成組成清單 (每個包獨有)

         文件清單

         安裝或卸載時運行的腳本

2、數據庫(公共)

         程序包名稱及版本

         依賴關系;

         功能說明;

         安裝生成的各文件的文件路徑及校驗碼信息;


rpm包的數據庫文件:/var/lib/rpm/

blob.png

三 獲取程序包的途徑:

                1 系統發版的光盤或官方的服務器;

                         CentOS鏡像:

                         http://mirrors.aliyun.com

                         http://mirrors.sohu.com

                         http://mirrors.163.com

                        

                2 項目官方站點 例如:http://www.zabbix.com/

                3 第三方組織:

                         Fedora-EPEL

                         搜索引擎:

                         http://pkgs.org

                         http://rpmfind.net

                         http://rpm.pbone.net

                4 自己制作rpm包

建議:安裝前請務必注意以下幾點:

                1、檢查其合法性;

                2、來源合法性;

                3、程序包的完整性;

什么是EPEL

  如果既想獲得 RHEL 的高質量、高性能、高可靠性,又需要方便易用(關鍵是免費)的軟件包更新功能,那么 Fedora Project 推出的 EPEL(Extra Packages for Enterprise Linux)正好適合你。EPEL(http://fedoraproject.org/wiki/EPEL)是由 Fedora 社區打造,為 RHEL 及衍生發行版如CentOS、Scientific Linux 等提供高質量軟件包的項目。


四 CentOS系統上rpm命令管理程序包

 安裝、卸載、升級、查詢、校驗、數據庫維護

rpm命令:

        rpm [OPTIONS]  [PACKAGE_FILE]

        安裝:-i, –install

        升級:-U, –update, -F, –freshen

        卸載:-e, –erase

        查詢:-q, –query

        校驗:-V, –verify

        數據庫維護:–builddb, –initdb

提示:

-Fvh是升級RPM包的命令,它表示如果后面的軟件包沒有安裝在系統上,則這個軟件包不會安裝。也就是說只有安裝到系統上的軟件包才會被升級。

    安裝:

            rpm {-i|–install} [install-options]PACKAGE_FILE …

             -v: verbose

             -vv: 更詳細的輸入

             -h: 以#顯示程序包管理執行進度;每個#表示2%的進度

            

             rpm -ivh PACKAGE_FILE …

                 [install-options]

             –test: 測試安裝,但不真正執行安裝過程;dry run模式;

             –nodeps:忽略依賴關系;

             –replacepkgs: 重新安裝;

             –nosignature: 不檢查來源合法性;

             –nodigest:不檢查包完整性;

            

             –noscipts:不執行程序包腳本片斷;

                 %pre: 安裝前腳本; –nopre

            

                 %post: 安裝后腳本; –nopost

                 %preun: 卸載前腳本; –nopreun

                 %postun: 卸載后腳本;  –nopostun

示例1:

 rpm -ivh php-bcmath-5.3.3-22.el6.x86_64.rpm

blob.png

這個有報錯一個是KEY 那個沒有關系,下面這個報錯是依賴關系問題

 rpm -ivh –nodeps php-bcmath-5.3.3-22.el6.x86_64.rpm  (–nodeps:忽略依賴關系 就可以安裝上了,但是不建議使用)

blob.png

    升級與降級:

            rpm {-U|–upgrade} [install-options]PACKAGE_FILE …

            rpm {-F|–freshen} [install-options]PACKAGE_FILE …

             

            -U:升級或安裝,如果事先安裝了老版本包則升級,沒有安裝老版本包則安裝此包

            -F:升級,如果事先沒有安裝老版本的包則不升級

            –oldpackage:降級;

            –force:強制升級;

注意:

    1.不要對內核做升級操作;Linux支持多內核版本并存,因此,直接安裝新版本內核;

    2.如果某原程序包的配置文件安裝后曾被修改過,升級時,新版本的程序提供的同一個配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;

    查詢:

        rpm {-q|–query} [select-options][query-options]

         

        [select-options]

        -a, –all:查詢所有已經安裝過的包;

        -f  FILE:查詢指定的文件由哪個程序包安裝生成;

        -p, –package PACKAGE_FILE:用于實現對未安裝的程序包執行查詢操作;

        –whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個程序包提供;查詢提供了 CAPABILITY 功能的軟件包。

        –whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴;查詢所有需要 CAPABILITY 功能才能運行的軟件包。

 

        [query-options]

        –changelog:查詢rpm包的歷史變更信息changlog;

        -l, –list:程序安裝生成的所有文件列表;

        -i, –info:程序包相關的信息,版本號、大小、所屬的包組,等;

        -c, –configfiles:查詢指定的程序包提供的配置文件;

        -d, –docfiles:查詢指定的程序包提供的說明文檔;

        –provides:列出指定的程序包提供的所有的CAPABILITY;

        -R, –requires:查詢指定的程序包的依賴關系;

        –scripts:查看程序包自帶的腳本片斷;

示例2:查看所有已經安裝的軟件包

blob.png

示例3:查詢某個軟件是否已經安裝

blob.png

示例4:查詢某一文件屬于哪個軟件包

blob.png

示例5:查詢一個已經安裝的軟件包包含哪些文件

blob.png

示例6:查詢一個已經安裝的軟件包的詳細信息

blob.png

示例7:查看某一個已經安裝的軟件包的配置文件有哪些

blob.png

示例8:查看一個已經安裝的包自帶的說明說明文檔

blob.png

示例9:查詢一個已經安裝的軟件包依賴于什么軟件包

blob.png

示例10:查詢一個軟件包中的腳本片段

blob.png

    卸載:

            rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts]

            [–notriggers] [–test] PACKAGE_NAME …

    校驗:

            rpm {-V|–verify} [select-options][verify-options]

             

            -V:后面接軟件名稱,若該軟件所含的文件被改動過才會列出來

            -Va:列出目前系統上面所有可能被改動過的文件

            -Vp:后面加的是文件名稱,列出該軟件內可能被改動過的文件

            -Vf:列出某個文件是否被改動過

             

            S file Size differs:文件的容量大小是否被改變

            M Mode differs (includespermissions and file type):文件的類型或文件的屬性(rwx)是否被改變

            5 digest (formerly MD5 sum)differs:MD5這一種指紋碼的內容已經不同

            D Device major/minor numbermismatch:設備的主/次代碼已經改變

            L readLink(2) path mismatch:Link路徑已被改變

            U User ownership differs:文件的所有者已被改變

            G Group ownership differs:文件的所有屬用戶組已被改變

            T mTime differs:文件的創建時間已被改變

            P capabilities differ:capabilities已經改變

提示:當一個軟件包的文件被被動過,那么它的顯示就會是:

            SM5DLUGTP c filename

            c表示文件的類型

             

            c:config file:設置文件

            d:documentation:文檔文件

            g:ghost file:“鬼”文件,通常是該文件不被某個軟件所包含,較少發生

            l:linense file:授權文件

            r:read line:自述文件

示例11:查看某個已經安裝的軟件包中的哪些文件被改動過,沒有顯示就代表沒有被改動。

blob.png

示例12:列出系統上所有的rpm包中的文件中被改動的文件有哪些(針對所有rpm包中的所有文件查詢)

blob.png

示例13:查看某個文件是否被改動過,沒有改動就不顯示(這個文件一定要屬于某個rpm包才行)

blob.png

包來源合法性驗正及完整性驗正:

    1.完整性驗正

    2.來源合法性驗正

獲取并導入信任的包制作者的密鑰:

導入所需要公鑰:

        對于CentOS發行版來說:rpm–import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

    驗正:

        1.安裝此組織簽名的程序時,會自動執行驗正;

        2.手動驗正:rpm -K PACKAGE_FILE

例子14:手動驗證 php-bcmath-5.3.3-22.el6.x86_64.rpm

blob.png

rpm包數據庫重建:

        rpm管理器數據庫路徑:/var/lib/rpm/

        查詢操作就是通過此處的數據庫進行;

        rpm {–initdb|–rebuilddb} [–dbpathDIRECTORY] [–root DIRECTORY]

            –initdb:如果事先不存在數據庫,則新建之;否則,不執行任何操作;

            –rebuilddb:重新構建,通過讀取當前系統上所有已經安裝過的程序包進行重新創建;

            –dbpath:指明要創建數據庫的目錄

例子14:如果rpm數據庫系統損壞可以使用此命令重建

blob.png    

原創文章,作者:liangkai,如若轉載,請注明出處:http://www.www58058.com/11369

(0)
liangkailiangkai
上一篇 2016-02-14 09:49
下一篇 2016-02-14 09:52

相關推薦

  • linux 學習筆記

    第一周

    Linux干貨 2018-03-16
  • N21沉舟15周作業

    1、總結sed和awk的詳細用法; 2、刪除/boot/grub/grub.conf文件中所有行的行首的空白字符; #  sed 's@^[[:space:]]@@' /boot/grub/grub.conf 3、刪除/etc/fstab文件中所有以#開頭,后跟至少一個空白字符的行的行首的#和空白字…

    Linux干貨 2016-11-14
  • 計算機的組成及其功能

    1.計算機的組成及其功能 1.1計算機的硬件基本結構 從ENIAC到當前最先進的計算機都采用的是馮·諾依曼體系結構分別是:控制器,運算器,存儲器,輸入與輸出設備 控制器:將指令逐條從存儲器中取出,經譯碼分析后向全機發出相應         的操作控制信號作用于其他部件,使各部件有…

    Linux干貨 2016-10-28
  • 第五周作業

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; grep“^[[:space:]]\+” /boot/grub/grub.conf grep  -E “^[[:space:]]+” /boot/grub/grub.conf 2、顯示/etc…

    Linux干貨 2017-02-20
  • linux文件管理類命令

    stat、alias、xargs命令使用;(非)字母,(非)數字的表示方法。

    2017-12-11
  • N22-妙手-第十周博客作業

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情)     (1) POST階段         加電自檢,確保每個設備能正常工作     (2) BIOS  &nb…

    Linux干貨 2016-12-05

評論列表(1條)

  • stanley
    stanley 2016-02-14 09:51

    已置頂

欧美性久久久久