RPM全名是RPM Package Manager(原Red Hat Package Manager,现在是一个递归缩写),简称RPM。由Red Hat公司开发,相对于其他类似的套件管理程序,RPM使用起来比较方便。它是一种用于互联网下载包的打包及安装工具,用于对Linux的一些发行版进行软件管理,通过rpm可以对软件进行安装、升级、卸载、查询、校验。它生成具有.RPM扩展名的文件。

 

rpm包的文件名通常包含软件的名称、版本号、操作系统、适用平台等,如appname-VERSION-RELEASE.ARCH.rpm VERSION:软件版本号;RELEASE:发行号,包自身的修订号,有时候还会包含适用于OS的信息;比如bash-4.3.2-2.centos6.x86_64.rpm中的2.centos6 ARCH: 适用的平台:x86:i386, i486, i586, i686x86_64: x86_64, amd64等。

                           

一、rpm安装:

rpm{-i|--install} [install-options] PACKAGE_FILE1...;-i: 安装; -h: hash,以#来表示安装进度;-v,--verbose:显示安装过程中的详细信息;安装时常用的组合: -ivh, -ivvh(显示更详细的安装信息);

例如:安装rpm -ivh zlib-devel-1.2.3-29.el6.x86_64.rpm

初学RPM程序包管理


           --test:不执行真正的安装过程,而仅报告依赖关系及冲突信息等;例: # rmp –ivh –test php-5.3.38.e16.x86_64

初学RPM程序包管理

               程序包之间存在依赖关系:由众多目的单一的小程序组成;结果程序包之间存在相关性;

强制安装:--force;当安装软件包的时候,系统提示软件包已经安装,无法安装同版本软件的时候,可以使用--force强制安装;

: rpm -ivh zlib-devel-1.2.3-29.el6.x86_64.rpm;提示此软件包已安装

初学RPM程序包管理

此时可以添加--force选项强制安装;如rpm -ivh --force zlib-devel-1.2.3-29.el6.x86_64.rpm

初学RPM程序包管理

但是由于包之间存在依赖关系,即使使用--force也无法安装;

例:rpm -ivh --force dhcp-devel-4.1.1-43.P1.el6.centos.1.x86_64.rpm

初学RPM程序包管理

因此可使用--nodeps选项解决此问题

--nodeps忽略依赖关系:由于包之间存在依赖关系,当安装一个包时提示安装其他包,而又要必须安装此包时可以使用--nodeps解决;忽略依赖关系后能安装成功,但是此包未必就能成功运行;

 

例:# rpm -ivh --nodepsdhcp-devel-4.1.1-43.P1.el6.centos.1.x86_64.rpm

不使用--nodeps,执行结果如下

 初学RPM程序包管理

添加—nodeps后,安装成功                 

         初学RPM程序包管理

                   覆盖安装:--replacepkgs;重新安装并覆盖原有的文件。例 # rmp –ivh --replacepkgs  php-5.3.38.e16.x86_64.rpm

  初学RPM程序包管理  


     二、rpm升级:

      rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...    -U: 升级或安装,

rpm {-F|--freshen} [install-options] PACKAGE_FILE...     -F:升级,在老版本的基础上升级

常用组合:-Uvh, -Fvh --oldpackage:降级到旧版本;

        

例:将 zsh-4.3.10-8.el6_5.x86_64 升级为zsh-4.3.10-9.el6.x86_64

# rpm -Uvh zsh-4.3.10-9.el6.x86_64.rpm

 初学RPM程序包管理

       

使用--oldpackage由当前版本升级到早期的版本如下;10-9已不存在

      初学RPM程序包管理          

        

      三、rpm卸载:

     移除已经安装的程序包rpm{-e|--erase} [--allmatches] [--nodeps] [--test] PACKAGE_NAME ...   --nodeps:忽略依赖关系;--test: 测试卸载;dry-run模式;--allmatches:如果一个程序包同时安装多个版本,则此选项一次全部卸载之;

注意:如果程序包的配置文件安装后曾被修改,卸载时,此文件通常不会被删除,而是被重命名(加后缀.rpmsave)后留存;

例:卸载zsh-4.3.10-8.el6_5.x86_64.rpm

# rpm -e zsh-4.3.10-8.el6_5.x86_64.rpm

初学RPM程序包管理

查询zsh已不存在

      四、rpm查询:  

      查询某包是否已经安装,以及检查安装的所有包;还可以查看某包的详细信息;rpm {-q|--query} [select-options] [query-options]

1、查询某包或某些包是否安装:rpm -qPACKAGE_NAME...

例:rpm -q zsh-4.3.10-8.el6_5.x86_64        

   初学RPM程序包管理          

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

初学RPM程序包管理

3、查询某文件是由哪个包安装生成:rpm-qf /PATH/TO/SOMEFILE

rpm -qf 后面跟要查询的文件名,可以查询该文件属于哪个软件包。所以当某个文件丢失

 或者损坏的时候。就可以查询所属软件包,然后重新安装,即可恢复。

例:查询/etc/zlogin是由那个包安装的 #rpm -qf /etc/zlogin

初学RPM程序包管理

4、查询尚未安装的包文件的相关信息

   #rpm -qpi PACKAGE_FILE

    初学RPM程序包管理

[query-options]

       1、查询某包的简要说明信息:

                rpm-qi PACKAGE_NAME

        2、查询某包安装生成的文件列表:

                rpm-ql PACKAGE_NAME

       3、查询某包安装完成后生成的所有配置文件:

               rpm-qc PACKAGE_NAME

       4、查询某包安装完成后生成的所有帮助文件:

               rpm-qd PACKAGE_NAME

        5、查看某包制作时随版本变化的changelog(版本历史)信息:

                rpm-q --changelog PACKAGE_NAME

        6、查询某包提供的capabilities(功能):

                rpm-q --provides PACKAGE_NAME

       7、查询某包所依赖的capabilities

                 rpm-q --requires PACKAGE_NAME

        8、查询某包安装或卸载时执行脚本:

                 rpm-q --scripts PACKAGE_NAME

     五、rpm校验:

     rpm {-V|--verify} [select-options] [verify-options] 常见用法:rpm -VPACKAGE_NAME;使用-V选项对系统中已经安装的软件包进行验证,比如系统发生安全故障,对软件包进行验证是必不可少的事情;

 例:对/etc/zlogin重命名备份,然后用-V查询该文件的完整性 

初学RPM程序包管理  

执行结果如上所示,显示文件丢失,恢复之后再查询完整性,无丢失                  

 

       六、程序包的合法性验正:

                   a来源合法:由我们信任的制作者提供; 依赖于:制作者的数字签名;签名是作者使用自己的私钥加密程序包的特性码进行的;

                   b内容合法:包未被二次修改;完整性校验成功; 依赖于:制作者提供的程序特征码;验正方式:安装者用同样的特征码提取算法提取程序包的特征码,并与原作者提供的相比较;

       七、rpm管理器数据库:/var/lib/rpm

                   重建数据库:rpm{--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY]--initdb: 初始化数据库,即数据库完全不存时,可新建之;--rebuilddb: 无论当前数据存在与否,都会直接重建此库;

                                                       

获取程序包的途径:

                   1、系统的发行光盘镜像或官方站点

                           mirrors.sohu.com

                            mirrors.163.com

                            mirrors.aliyun.com

                   2、搜索引擎

                            http://rpmfind.net

                            http://rpm.pbone.net

                            http://pkgs.org