RPM简介

RPM是红帽公司开发的一个linux软件包安装和管理程序,它可以解决linux下使用传统方式安装软件所带来的文件分散、管理困难等问题,用户可以方便的在linux系统中安装、升级、删除软件,以及在一个统一的界面对所有的RPM软件包进行管理。

RPM为用户提供了统一的安装和管理界面,通过它,用户可以直接以二进制的方式安装软件包,它会自动为用户查询是否已经安装了相关的库文件以及软件包所依赖的其他文件;用它删除程序时它会自动删除相关程序;用RPM升级软件,它会保留原先的配置文件,这样用户就不用配置新安装的软件了;它保留了一个数据库,这个数据库中包含了所有已安装的软件包的资料,通过这个数据库用户可以方便的查看到自己的系统上安装了那些软件包,这些软件包分别安装了哪些文件,这些文件放在了什么位置;以及这些软件包的版本、功能描述、作者、版权等等相关信息。

RPM软件包的命名格式:            软件包名称----版本号----修正版本号----.硬件平台.rpm

linux上还有一种安装软件包的方法,是使用源码包安装软件(一般称为tarball,即打包压缩后的源码软件包),感兴趣的朋友可自行了解相关信息。RPM安装方式与源码安装方式的优点和缺点如下:

1)rpm包安装、管理、查看、卸载都比较方便,这是它的优点。

2)源码方式安装的优点是可以自定义软件安装选项,可以有选择的自定义安装软件的那些功能,安装在什么目录,安装时加载哪些模块,使用何种编译器来编译安装软件(这样针对自己的硬件平台编译安装出来的二进制程序一般性能比较高);源代码软件包的版本一般比rpm包要新,因为rpm包无非就是通过源代码软件包编译以后制作出来的。

_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

RPM命令的使用方法:

RPM软件包的安装、删除、升级、查看和验证等所有的操作都是由rpm这一命令来进行的,rpm命令有12种模式,不同模式有不同的命令格式,完成不同的功能,其中常用模式的命令格式如下所示:

查询模式:rpm  {-q|--query}  [select-options]  [query-options] 

验证模式:rpm  {-V|--verify}  [select-options]  [verify-options] 

安装模式:rpm  {-i|--install}  [install-options]   PACKAGE_FILES  .......

升级模式:rpm  {-U|--upgrade}  [install-options]  PACKAGE_FILES  .......

删除模式:rpm  {-e|--erase}  [erase-options]  PACKAGE_NAME  .......

这5种模式分别对应软件包的查看、验证、安装、升级、删除。不同模式的rpm命令会有不同的选项,其中包含一般选项(5种模式都可以使用)、选择选项(select-options)、查询选项(query-options)、验证选项(verify-options)、安装选项(install-options)、删除选项(erase-options)6种。

 

rpm 命令选项介绍

1.一般选项

一般选项可用于rpm命令的所有模式,常用的一般选项如下:

-h:用“#”显示完成的进度

2.选择选项

选择选项可用于查询和验证模式,常用的选择选项如下所示:

-a:查询所有的安装包

-f  FILE:查询FILE是由哪个rpm软件包安装的

3.查询选项

查询选项可用于查询和验证模式,常用的查询选项如下所示:

-i:显示软件包的名称、版本、描述等信息

-l,--list:显示这个软件包内所包含的文件

--provides:显示这个软件包所提供的功能/程序

-R:查询安装该软件包所需要的其他软件包

-s:列出软件包中所有文件的状态

4.验证选项

验证选项只能用于验证模式,常用的验证选项如下:

--nodeps:不验证依赖的软件包

--nofiles:不验证软件包文件的属性

5.安装选项

安装选项可用于安装和升级模式,常用的安装选项如下所示:

--force:1)要安装的软件版本已经安装在系统上(2)系统上现有的版本必要安装的版本高---------->这两种情况下,使用此选项依然会强制安装

--nodeps:使用rpm安装软件包前,rpm会检查本地操作系统环境是否满足该软件包的依赖关系需求,及正确运行该软件包所需的其他软件包是否已安装,使用此选项将忽略软件包所依赖的其他软件强行安装,不推荐使用此选项,因为这样安装的软件多半无法正常运行,除非你知道自己在做什么。

--test:模拟安装,不会实际安装软件包到系统中,只检查并显示可能存在的冲突。

6.删除选项

删除选项只能用于删除模式,常用的删除选项如下:

--allmatches:删除指定名称的所有版本的软件(不使用此选项,当删除的软件存在多个版本时会报错)

--nodeps:忽略其他依赖此软件包的软件,强制删除该软件包;不建议这样做,因为这样做删除此软件包以后,其他相关的软件就无法正常运行了。

--test:不是真正删除,只是模拟。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

安装RPM软件包

rpm  -ivh  软件包名称------------------正常安装软件包

rpm  -ivh  --test  软件包名称----------检查一个软件包的安装是否会有冲突

rpm  -ivh  --force  软件包名称--------覆盖已安装的软件包

rpm  -ivh  --nodeps  软件包名称-----不安装依赖的软件包,强行安装此软件包。

 

查看RPM软件包

使用rpm命令可以查看指定软件包的详细信息、安装的文件清单、依赖的软件包清单、某个软件包是否已经安装、系统中所有已安装软件包的清单等信息。

1.查看已安装软件包的详细信息:      rpm   -qi  软件包名称

2.查看已安装的某个软件包的文件列表:rpm –ql  软件包名称

3.查看已安装软件包所依赖的其他所有软件包清单:rpm –qR 软件包名称

4查看系统中所有已安装软件包的清单:rpm  -qa       #如果希望输出所有已安装软件包的详细信息,可以使用命令:rpm  -qai

 

升级RPM软件包

对于已经安装的RPM软件包,如果觉得版本太低,希望升级到一个更高的版本,可以使用带有-U选项的rpm命令,如下所示:

#rpm  -Uvh  软件包文件名        例如:想升级tftp#rpm  -q tftp-server#rpm –Uvh tftp-server-XXX.rpm

命令执行后,系统将使用新版tftp-server软件包安装文件覆盖旧版本的文件,并更新RPM数据库中的tftp-server软件包信息。

 

删除RPM软件包

rpm  -e  软件包名称

rpm  -e  --test  软件包名称    #模拟删除软件包,系统会在删除软件包以前先检查该软件包是否被其他软件包所依赖,如果存在依赖关系,则系统会拒绝删除该软件包。

rpm  -e  --nodeps  软件包名称  #不顾该软件包是否被其他软件包所依赖,强制删除该软件包---------->这样做很可能导致其他软件包无法正常使用。

 

安装.src.rpm结尾的软件包

这类软件包是包含了源代码的rpm包,在安装时需要编译,安装有两种方法

1.1生成源代码#rpm   -i    X.src.rpm    #cd /usr/src/redhat/SPECS    #rpmbuild  -bp  X.specs

1.2编译并安装源代码#cd /usr/src/redhat/SPECS/X    #./configure    #make    #make  install

 

2.1生成二进制RPM安装包#rpm   -i    X.src.rpm    #cd /usr/src/redhat/SPECS    #rpmbuild  -bb   X.specs

2.2在/usr/src/redhat/RPM/i386/目录下会生成一个新的编译好的二进制rpm包,执行如下命令安装即可#cd    /usr/src/redhat/RPM/i386/    #rpm  -ivh  new_package.rpm

 

查看程序由哪个RPM包安装

#rpm –qf  `which  程序名`         #返回软件包的名称

#rpm –qfi  `which  程序名`        #返回软件包的详细信息

#rpm –qfl  `which  程序名`        #返回软件包的安装文件列表