Rpm包管理功能全解

软件包管理的功能:将编译好的程序的各组成文件打包成一个或几个程序包文件,为了方便的实现程序包的安装、升级、卸载、查询、校验、数据库维护。

 

下面我们来看看RPM包管理的解析

Rpm包在redhatS.U.S.E中有很大的应用

我们接下来就以centos系统中rpm包的管理做一些详细的功能解析

使用yumrhel系列)安装时可以自动解决依赖关系d

rpm包命名格式:

name-VERSION-release.arch.rpm

VERSIONmajor.minor.release

Major:主版本号(版本有大的更新);  minor:次版本号(小更新)

release.archrpm包的发行号

release.os: 2.el7(平台).i386(架构).rpm  archetecture(架构):i386, x64(amd64), ppc, noarch理器;

实际操作:

本机在服务器上已经成功下载zsh-4.3.10-9.el6.x86_64.rpm用此来实施

  语法rpm [options] [packages_file]

        安装;-i--install

            rpm -ivh /path/to/rpm_package

                -v;显示安装信息

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

                -h;以井号显示安装进度

                --nodeps;忽略依赖关系(适用于卸载)

                --force;强行安装(适用于卸载)

 

wKiom1cDpGOwcuL7AAAbD0eZ8uY432.png


        重装;--replacepkgs会覆盖原有信息

            Rpm -i  --replacepkgs  /path/to/rpm_name

     [root@bucktan ~]# rpm -ivh --replacepkgs zsh-4.3.10-9.el6.x86_64.rpm

 

        卸载;-e--erase

            rmp -e package_name

                  --allmatches卸载匹配所有指定名称的软件包

                  --nodeps忽略依赖关系

                  --test 测试卸载

wKioL1cDpSLDWB2WAAAYmdiH8_g448.png

        升级;-U -F

            升级或安装;

                rpm -U /path/to/rpm_package

                    --oldpackage降级

在服务器上取了两个包:zabbix-2.4.0-1.el6.x86_64.rpm

                      zabbix-2.4.5-1.el6.x86_64.rpm

 wKioL1cDpYayo2j7AAAuOFUDWB0252.png

之前升级至zabbix-2.4.5-1.el6.x86_64.rpm

[root@bucktan]~# rpm -Uvh --oldpackage zabbix-2.4.0-1.el6.x86_64.rpm

            只升级;(若不存在旧版本则不会执行)

                rpm -F /path/to/rpm_package

            通常搭配vh使用;

                rpm -Uvh|-Fvh /path/to/package

              --nosignature 不检查包签名信息的合法性

 

            注意;不要对内核执行升级操作

            不同内核版本可以共存,因此可执行安装操作,但不建议升级

 

    (重点) 查询rpm {-q|--query} [select-options] [query-options]

            查询包是否已安装;

                rpm -q package_name

      [select-options]:

         rpm -qa查询所有已安装的包;

         rpm -qf /path/to/file查询某文件是由那个包生成的;

             -q --whatprovides   file_name  查询指定的capability由哪个程序包所提供

 

             -q --whatrequires    file_name 查询指定的capability由哪个程序包所依赖

 wKiom1cDpSLR6-MLAAAafQsp1oU933.png

       [query-options]:

                 rpm -ql package_name查询包安装后生成的文件;

             wKiom1cDpTrT49BGAAAQQbrRqOk440.png

                rpm -qi package_name查询包的简要说明;

      wKioL1cDpfWTKZhGAAAibRL0NqQ444.png

                rpm -qd package_name查询包安装后生成的帮助文档;

            wKiom1cDpaDi1XzFAAAafQsp1oU050.png

                rpm -qc package_name查询包安装后生成的配置文件;

 

                rpm -qR package_name 查询指定软件包的依赖关系

                rpm -q --scripts   查询包相关的脚本;

                    

                 脚本分四类

                    preinstall 安装前脚本

                    postinstall 安装后脚本

                    preuninstall 卸载前脚本

                    postuninstall 卸载后脚本

 

            查询未安装包的相关信息;-qp

                  rpm -qpl package_file 查询安装后会生成的的文件

                  rpm -qpi package_file查询包的简单描述信息;

 

              可搭配其选项使用,如-qp --scripts

 

        校验;检查安装后的文件是否被修改过

            rpm -V package_name


            [root@bucktan ~]# rpm -V zsh

             S.5....T.  c /etc/zshrc

              返回的注释信息;

                S file Size differs  大小

                M Mode differs (includes permissions and file type) 头文件

                5 digest (formerly MD5 sum) differs MD5

                D Device major/minor number mismatch

                L readLink(2) path mismatch

                U User ownership differs 属主

                G Group ownership differs 属组

                T mTime differs 修改时间

                P caPabilities differ 能力改变了

 

    校验来源合法性和软件的完整性

            包完整性;单项加密机制(MD5|sha1..

            来源合法性;公钥加密机制(RSA

                rpm -K /path/to/packagefile直接检验程序包来源合法性

                rpm --checksig /path/to/package_file

                    --nosigeature:不检查来源合法性

                    --nodigest:校验时不检查包完整性

            导入GPG密钥文件:

            rpm --import /path/to/gpg-key-file

            导入以后再做验证

        wKioL1cDph_COmIrAAAXPvzS3P0686.png

    数据库

            位置:/var/lib/rpm

            

            重建:

                rpm --initdb:初始化

                    如果事先不存在一个数据库,则新建之

                rpm --rebuilddb 重建

                    直接新建数据库,会覆盖原有库

 wKioL1cDptXDGgN_AAAzkl8bWEE769.png