一、RPM包管理的用途:

        1、可以安装、删除、升级和管理软件;当然也支持在线安装和升级软件;
        2、通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包;
        3、可以在查询系统中的软件包是否安装以及其版本;
        4、作为开发者可以把自己的程序打包为RPM 包发布;
        5、软件包签名GPG和MD5的导入、验证和签名发布
        6、依赖性的检查,查看是否有软件包由于不兼容而扰乱了系统;


二RPM 的使用权限:


                RPM软件的安装、删除、更新只有root权限才能使用;对于查询功能任何用户都可以操作;如果普通用户拥有安装目录的权限,也可以进行安装;


、RPM包的命名格式:

    

            name-version-relase.arch.rpm


version: major.minor.release,同源代码

release: rpm自身的发行号,与程序源码的发行号无关,仅用于标识对rpm包不同制作的修订;同时,release还包含此包适用的OS

            eg:

        bash-4.2.3-3.centos5



分包机制:

核心包,主包:命名与源程序一致

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包的途径:

1、发行的光盘或站点服务器

镜像:

http://mirrors.163.com

http://mirrors.sohu.com

2、项目的官网

         源代码

rpm包

3、很多第三方机构或个人制作并公开发布许多rpm包

http://rpmfind.net

http://rpm.pbone.net


 4、可靠的途径:    EPEL

         Fedora-EPEL


rpm包的合法性验正:

 1、包制作者制作完成之后会附加数字签名于包上;

 2、包的制作者使用单向加密提取原始数据的特征码,而后使用自己的私钥加密这段特性码,附加原始数据后面。

     验正过程:

前提:必须有可靠机制获取到包制作者的公钥;


    1使用制作者的公钥解密加密的特征码,能解密则意味着来源合法;

    2、使用与制作者同样的意向加密算法提取原始数据的特征码,并与解密出来的特征作比对,相同,则意味着完整性没问题;


、安装程序包:

        一般格式为

                    rpm [option] package_name


        常用参数

        -i:    表示安装

        -h:     用#做进度为标记

        -v:    表示输出

        -vv:   显示调试信息

        --test:仅作测试,并不真正安装

        -e:    卸载程序包

        -U:    升级或安装程序包

        -F:    纯升级

      --force: 强制升级        

     --nodeps: 不检查依赖性


    如果程序包依赖于其它包:

1、解决依赖关系

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


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

                    系统允许多内核并存

    

查询操作:

          -q:    查询某包是否安装

          -qa:   查询所有已经安装的包

          -qi:   查询包的描述信息 

          -ql:   查询某包安装生成了哪些文件

          -qc:   查询某包安装生成了哪些配置文件

          -qd:   查询某包安装生成了哪些帮助文件

          -qf:   查询某文件是由哪个包安装生成的   

          -p:    对尚未安装的包执行查询 

                长和 (-qpi,-qpl,-qpc,-qpd)一起使用

      -q --scripts:查询程序包的相关脚本

              


rpm包来源合法性及完整性检验:


前提:在当前系统上导入包的制作者的公钥

导入:

rpm --import /path/to/key_file


# rpm -qa gpg-pubkey*

     显示所有已经导入的gpg格式的公钥


# rpm -qi gpg-pubkey-NAME

显示密钥的详细信息


检查包:安装过程中会自动执行

        手动检查:

rpm -K /path/to/package_file

rpm --checksig /path/to/package_file


不检查包完整性:

        rpm -K --nodigest

不检查来源合法性:

rpm -K --nosignature


    数据库重建:

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

                    重建:

rpm --initdb:初始化

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


rpm --rebuilddb: 重建

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



九、例子

  

   查询某包是否安装,并卸载,再安装

Linux之RPM详解_rpm


    

  查看安装包的详细信息及生成目录

Linux之RPM详解_在线安装_02


 查看某包生成的配置目录及帮助信息

Linux之RPM详解_Linux rpm_03

 查询安装包的相关脚本


Linux之RPM详解_Linux rpm_04


  查看尚未安装的包的信息

Linux之RPM详解_rpm_05


数字证书的安装及验证,由于不同版本的GPG文件放置的位置可能不同,不过文件名大多是以

 GPG-KEY来说明的,可以用find来查找,找到并导入:

Linux之RPM详解_rpm_06






                       互相学习

                       共同讨论

                       一起发展