rpm早期是由redhat公司开发用来管理软件安装的机制,它以数据库的方式来记录用户所需要安装


的软件。由于软件安装通常会存在依赖属性,比如:如果我们需要安装A软件,可能需要安装软件B或C


后才允许安装A,或者安装B有需要A,所以我们就需要将存在依赖关系的软件同时安装。而rpm解决了


这一问题,他将我们说需要的软件打包成*.rpm,同时它还具有在线升级功能。


    rpm包的安装环境必须和打包环境一样,还必须满足软件的依赖性,还有很重要的一点:某一软件


的rpm包可能因为打包者不同,会忽略软件中我们可能需要用到的功能,所以很多时候就需要我们手动


去编译SRPM(软件源代码)。通常没用经过编译的SRPM文件的后缀名是.src.rpm,它与rpm包的不同点


就是不能直接安装,可以自己修改参数并编译。

    

     1.rpm包的命名格式:

        eg:zsh-4.3.10-7.el6.x86_64.rpm

               zsh表示软件名  4.3.7 表示软件的版本信息 10表示修正的版本号

               x86_64表示适用的硬件平台  .rpm文件扩展名


     2.rpm的默认安装路径:/etc 设置文件存放目录

                          /usr/bin  可执行文件

                          /usr/lib  供程序使用的动态函数库

                          /usr/share/doc  软件的基本使用手册和帮助文档

                          /usr/share/man   man page文件

     3.rpm包的安装  rpm -ivh package_name...(可以同时安装多个rpm包)

       **-i表示安装,可以单独使用; v表示详细的安装信息;h表示显示软件的安装进度**

菜鸟的自我总结之RPM_rpm

       还可以用连网安装 rpm -ivh http://website.name/path/pkgname.rpm


       在安装的过程需要用到的执行参数有

         --nodeps  --replacefiles  --replacepkgs --test --force --prefix --noscripts

      

         --nodeps:若因依赖关系无法安装使用此参数可强制安装,但是可能会因依赖关系而导致   


                   软件无法正常使用        

         --replacefiles:可以直接覆盖以存在系统上的文件或是忽视版本冲突,但是被覆盖的文件 


                   会无法恢复

         --replacepkgs:将安装了的软件重新安装

         --force:--replacefiles + --replacepkgs

         --test:测试软件是否可以I安装

         --profix :将软件安装在自己指定的目录下  (eg:--profix/home/user1)

         --noscripts:禁止软件在安装的过程中自动执行某些系统命令


        4.RPM的升级与更新 rpm -Uvh|Fvh 软件名  

               -Uvh 若软件没有在系统上安装,则直接安装;若已安装且不是最新版则更新

               -Fvh 若软件没有在系统上安装则不安装;若已安装但不是最新版则更新

           菜鸟的自我总结之RPM_ linux_02


        5.RPM查询

             参看某软件书否安装  rpm -q gcc

             菜鸟的自我总结之RPM_rpm_03

             列出本机上安装的所有软件  rpm -qa 软件名

             参看某软件的设备文件  rpm -qc gcc

             列出软件的所有文件和目录 rpm -ql zlib

             参看文件是由哪个程序产生的 rpm -qf /路径/完整的文件名

             菜鸟的自我总结之RPM_ linux_04

             列出软件的详细信息 rpm -qi zlib

           菜鸟的自我总结之RPM_rpm_05

             其他查看参数:-qr  -qd

             **-qp[icblr]:中括号的参数和上面的一样,但是仅用于找出RPM文件内的信息**

            RPM的验证:

                  rpm -V zlib: 查看zlib的文件是否被改过  

                  rpm -Va 软件名 : 列出系统上所有被改过的文件

                  rpm -Vf  /路径:  查看文件是否被改动过(改动后会有信息显示)

                  rpm -Vp  某个rpm文件的文件名:列出软件能被噶懂富哦的文件

              **显示出来的文件是被修改过的*     菜鸟的自我总结之RPM_ linux_06

        


6.RPM合法性检验:将制作者的公钥导入到系统

        导入公钥:rpm --import /path/to/key_file

        显示所有已经导入的gpg格式的公钥:# rpm -qa gpg-pubkey*

                显示密钥的详细信息:# rpm -qi gpg-pubkey-NAME

菜鸟的自我总结之RPM_ linux_07

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

手动检查:

rpm -K /path/to/package_file

rpm --checksig /path/to/package_file

不检查包完整性 rpm -K --nodigest

不检查来源合法性:rpm -K --nosignature

      7. 重建数据库与RPM的卸载

            卸载  rpm -e 软件名

            **我们也可以添加上面提到过的--nodeps来强制删除 

            数据库的所在的路径:/etc.lib/rpm

            重建数据库:

如果没有则新建,否则不建:rpm --initdb

直接覆盖原有数据库,没有则新建:rpm --rebuilddb