rpm命令详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rpm命令详解相关的知识,希望对你有一定的参考价值。

       本节将对目前Linux的三大主流分之之一的redhat系的程序包管理器rpm进行详述,该管理器可实现对程序包的安装、升级、查询、删除、校验等功能。rpm安装程序包时,当出现较多依赖,无法一次性解决时,可以用rpm的前端管理工具yum自动解决依赖。

        但在这之前,需了解下程序包的组成格式,一般源码文件格式为name-version.tar.bz2等压缩格式 例如:httpd-2.2.29.tar.bz2 ,其中version包含有major.minor.release,major为程序的主版本号,通常代表程序的重大版本分支;minor为次版本号,通常指在该主版本号中修改或新增了某个功能,相对于程序来说只是较小改变;release为发行号,通常指修正了某个bug。

        rpm包的命令格式为name-version-release.arch.rpm,例如httpd-2.2.15-45.el6.centos.x86_64.rpm,version为源码包的版本(仍为major.minor.release),该release为该rpm的release,指制作rpm包,需要对rpm包做出一些修改时。另外,也会出现release后面跟有操作系统的版本,如httpd-devel-2.2.15-45.el6.centos.x86_64.rpm,指明了rpm包适用于redhat6或兼容centos上;arch为该rpm包所适用运行的平台,会出现有i386,x86-64,noarch(意为适用所有平台)。通过以上了解能判断出一个rpm包能运行在哪种系统的哪种平台之上等;一般程序的主包和某个功能包是分开的,例如,httpd-devel-2.2.15-45.el6.centos.x86_64.rpm(适用于开发功能)


        ①安装      rpm {-i|--install} [install-options] PACKAGE_FILE ...

          通用选项:

                    -v    显示信息

                    -vv    显示更详细信息

            安装选项:

                    -h    显示进度条                     

                    --test    测试安装,而是用于检测软件包依赖关系以及是否会有冲突信息

                    --nodeps    忽略依赖关系,一般不建议

                    --replacepkgs    用于重新安装软件包,当有配置文件之前有修改时,不会替换配置文件

                    --replacefiles    安装包时可能会出现某个文件已存在,使用该选项,则直接覆盖

                    --nosignature    安装时不检查包签名信息,即不检查包来源合法性

                    --nodigest    安装不检查包完整性

                    --noscripts    安装程序包时不运行脚本(一般程序包安装或者卸载时,都会运行一些脚本)

            示例:       

                          ~]# rpm -ivh tree-1.5.3-3.el6.x86_64.rpm   (这边先从光盘中复制该包到某目录)

                             Preparing...     ######################## [100%]

                             1:tree              ########################  [100%]


 

         ②升级   rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...    

                      pm {-F|--freshen} [install-options] PACKAGE_FILE ...   

                    升级某程序包时,如某个程序包没有安装过,-U会安装程序包;而-F则不进行任何操作

                     选项:  

                                --oldpackage      用于将现有rpm程序还原回较老版本

                                --force      当程序依赖其他程序包,无法安装,使用该选项,可以强制进行升级

            注意:不建议对内核进行升级,可能会导致无法启动;可以重新安装新内核,linux系统支持多                           多内核并存。



        ③卸载     rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]

           [--notriggers] [--test] PACKAGE_NAME ...

      选项:    

         --allmatches  卸载所有匹配名称的程序包(可能安装程序的多个版本)

         --nodes  忽略依赖关系

         --test   测试卸载

    示例:

                           ~]# rpm -e tree


        ④查询      rpm {-q|--query} [select-options] [query-options]

                挑选选项:

                                -a    查询所有已安装过的程序包

                                -f FILE    查询指定的文件是由哪个程序包生成

                                

                                -p  PACKAGE_FILE    对未安装的程序包进行查询操作

                                --whatprovides    查询指定的CAPABILITY有哪个程序包生成

                                --wharequires    查询指定的CAPABILITY被哪个程序包所依赖

                查询选项:

                                --changelog    查询rpm版本演变的日志

                                -l    程序包安装生成的所有文件列表

                                -i    显示程序包的相关信息(包括名称,版本,大小,安装时间)

                                -c    查询程序包的提供的配置文件

                                -d    查询程序包提供的文档

                                --provides    列出程序包提供的CAPABILITY

         -R,--requires  查询程序包的依赖关系

         --scripts   查询程序包自带的,在安装或卸载中使用的脚本

     示例: ~]# rpm -qf /etc/issue  查询issue由哪个程序包生成的

           centos-release-6-7.el6.centos.12.3.x86_64

         ~]# rpm -qc bash    查询bash的配置文件

             /etc/skel/.bash_logout

            /etc/skel/.bash_profile

            /etc/skel/.bashrc

         ~]# rpm  -qi bash   查询bash的相关信息


   ⑤校验  pm {-V|--verify} [select-options] [verify-options]

        通过查询当前的程序与程序安装时存储在rpm数据库中信息进行比对

   示例:  ~]# rpm -V centos-release

        S.5....T.  c /etc/issue  之前对/etc/issue文件有过修改,所以会出现此信息

      

     检测程序包的来源合法性和数据完整性:    

        rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6  或从光盘导入密钥 安装程                               序包时就会自动对程序包进行检测;

       手动验证程序的合法性和完整性(需先导入密钥): rpm  -K PACKAGE_FILE

       去除密钥:

            ~]# rpm -qa gpg-pubkey*  查询密钥

            gpg-pubkey-c105b9de-4e0fd3a3

            ~]# rpm -e gpg-pubkey-c105b9de-4e0fd3a3

            ~]# rpm -qa gpg-pubkey*  再次查询则无任何显示


   ⑥数据库重建  rpm {--initdb|--rebuilddb}[--dbpath DIRECTORY] [--root DIRECTORY]

           rpm的数据库位置位于/var/lib/rpm/,所有已经安装过的程序包在该数据库              中都会有记录

       选项:

           --initdb  初始化数据库,当没有数据库时,可用新建个rpm数据库,当

                前存在有数据库时,则不执行任何操作

           --rebuilddb  根据已安装数据包头部信息进行重新构建

    

         

                        

                    

                       

                   



          

   

                    

                    

        

            

            

            

            

以上是关于rpm命令详解的主要内容,如果未能解决你的问题,请参考以下文章

RPM命令详解(安装升级卸载)

rpm 命令详解

Linux rpm命令详解

[转]Linux rpm 命令参数使用详解

Linux rpm命令详解

Linux RPM 命令参数使用详解