rpm 命令解析

rpm命令解析

    rpm是redhat(红帽)公司开发的一个包管理器,专门用于管理rpm安装包的。

        rpm名字解析:

            原为:redhat package manager

            现为:RPM is Package Manager

                rpm是现在linux的工业级标准



    包管理器的功能:

        打包、安装、卸载、升级、校验、数据库管理

    

    rpm优缺点:

        安装方便,相对于古老的为编译方式。

        还是不能直接解决依赖关系,如果碰到需要依赖关系的程序,要一个一个依赖包都转起来

   

    rpm包源代码命名:

        name-version.tar.{gz,bz2,xz}


    

    rpm包的命名格式        

        name-version-relase.arch.rpm


             version:major.minor.release,同源代码,跟源代码的version一样


             release:

                      rpm自身的发行号,与程序源代码的发行号无关,仅用于表示对rpm包不同制作的修订;

                    同时,release还包含此包适用的OS

                        例如:bash-4.2.3-3.centos5


             arch:适用于的硬件平台

                X86:i386,i486,i586,i686等,不用的86表示支持不通可能较新兼容性更好,

             可以使用32位更新的特性

                X86_64:x86_64

                powerpc:pcc

                noarch:依赖于虚拟机

                例如:bash-4.2.3-3.centos5.x86_64.rpm



         一个程序有20个功能:常用功能有8个,特殊场景A:3个,特殊场景B:6个,二次开发相关功能:3个

                分包机制:

                    核心包(主包):

                        例如:

                            主包命名与源程序一致

                                bash-4.2.3-3.centos7.x86_64.rpm

                            子包:bash-a-4.2.3-3.centos7.x86_64.rpm

                                 bash-b-4.2.3-3.centos7.x86_64.rpm

                                  bash-devel-4.2.3-3.centos7.x86_64.rpm


  安装程序包:

      格式:rpm [option] /path/to/package_file

         -i:install,安装

        -v:显示安装信息

        -vv:显示更详细的安装信息

        -vvv:显示更加详细的安装信息

        -h:显示安装进度

            组合选项:-ivh

        --test:仅作测试,没有真正执行安装,检测安装是否正常

            如果依赖于其他包:

               1、解决依赖关系

               2、忽略依赖关系,能装上,但有可能无法运行

                    --nodeps:表示忽略依赖关系


       重新安装:

           --replacepkgs:替换上次原有的安装包

              重新安装时,如果原有的配置文件做了修改,很有可能不执行替换,而是将安装应该生成的配置文件重命名为.rpmnew


   卸载程序包:

      格式:rpm [option] package_name

         -e:erase,擦除,卸载

              如果被其他包所依赖:

               1、将依赖于此包的所有包一并卸载

                2、忽略依赖关系

                 能卸载,但依赖于此包的程序包可能会运行不正常

                    --nodeps:表示忽略依赖关系

               如果包的配置文件安装后曾被改动过,卸载时,此文件将不会被卸载,而是被重命名并保留

                   例如: warning:/etc/zprofile saved as /etc/zprofile.rpmsave


   升级程序包:

        新版本替换老版本

       格式:rpm [option] /path/to/package_file      

            1、升级或安装,有老版本就替换升级,没有就安装

                  -U:组合Uvh

            2、纯升级,一定要有老版本

                  -F:组合Fvh

              升级也有依赖关系,升级后的版本可能会有冲突:

                --force:强制升级

                    注意:不应该对内核执行升级操作,而是安装

                        Linux系统允许多内核并存,如果升级了Linux,启动Linux的时候会崩溃



    查询操作:

      1、查询某包是否安装

            格式:rpm -q package_name...

                一次可以查询多个,各个包之间用空格隔开

      2、查询所有已经安装的包

            rpm -qa

              按条件过滤:rpm -qa | grep 'PATTERN'

       3、查询包的描述信息

              rpm -qi package_name

       4、查询某包安装生成了哪些文件

              rpm -ql package_name

            (1)查询某包安装生成了哪些配置文件:rpm -qc package_name

                   (2)查询某包安装生成了哪些帮助文档:rpm -qd package_name

                   (3)查询程序包的相关脚本:rpm -q --scripts package_name

                        脚本有四类:

                            preinstall:安装前脚本

                            postinstall:安装后脚本

                            preuninstall:卸载前脚本

                            postuninstall:卸载后脚本

       5、查询某文件是由哪个包安装生成的

           rpm -qf /path/to/some_file


    数据库重建:

        数据库目录:/var/lib/rpm

           数据库包含了:程序的各个数据,有安装目录,文件大小,key等

        重建:

         1、rpm --initdb:初始化

             如果事先没有库,会新建一个,如果有,则不新建

         2、rpm --rebuilddb:重建

              直接重建,覆盖原有的数据库




你可能感兴趣的:(rpm命令初了解)