如转载,请注明出处:http://blog.csdn.net/robinson_0612/archive/2009/10/08/4699969.aspx
RPM全名是RedHat Package Manager,简称为RPM,又称之为RPM软件包管理器,使RedHat套件管理程序之一,类似于Windows控制面板中的添加删除模块,Windows添加删除程序通过将安装信息记录在注册表,以便于程序的更新,卸载。而RPM同样有着类似的功能,用于linux下套件包的安装与管理。
一、RPM与SRPM简介及功能
1. RPM:RPM通过采用数据库记录的方式来将所需要的套件安装到Linux系统中。RPM包的格式为*.rpm,RPM包为已经经过编译且包装完成的rpm文件,这是其最大的特点。与我们通用的软件安装类似,在安装所需的套件之前,先根据套件中提供的安装参数检查该套件安装所需的环境,如果系统的环境与套件中所要求的环境相一致(软件包打包时的环境),则可以成功安装,否则会提示报错,或提示其安装依赖属性模块,需预先安装某某套件才可以再安装该套件。成功安装套件后,RPM套件管理器会将所安装的套件包记录到RPM数据库中,以便后续的查询、验证、升级、卸载等。
2. SRPM:与RPM最大的特点相对应,SRPM就是包含了Source code的RPM,即SRPM提供的内容为源码,当然也就没有经过编译。 同时SRPM也提供了参数配置文件(configure与makefile)。想必大家已经知道,它与RPM最大的差异是,在安装套件时需要通过RPM管理器将要安装的套件以RPM管理的方式进行编译,根据系统环境修改参数配置文件,然后将编译好的RPM安装到Linux系统中。由此可以看出SRPM在编译时修改了参数配置文件,无需与当时打包的环境一致,从而降低了对套件包所需的安装环境。
二、RPM,SRPM包的格式及其说明
1.RMP与SRPM的格式通常为:
*.rpm 如:compat-db-4.1.25-9.i386.rpm
*.src.rpm 如:compat-db-4.1.25-9.i386.src.rpm
按以上简介可知,compat-db-4.1.25-9.i386.rpm为已经经过编译的文件,compat-db-4.1.25-9.i386.src.rpm则为没有经过编译的文件,通常套件在发行之前,同时提供rpm及srpm文件。
2. 关于文件中i386,i686的说明:
i386指这个软件包适用于intel 80386以上的所有x86平台的计算机。
i686指这个软件包适用于intel 80686以上,即Pentinum II以后Intel 系列的x86平台的计算机,K7以后等级的CPU。
noarch指这个软件包与硬件架构无关,可以通用。
3. 套件的文件名及版本:
如上述compat-db-4.1.25-9说明该套件的名称为compat-db,4.1.25-9为版本信息及发布次数。
三、RPM的查询功能
1. 格式:[root@localhost ~]# rpm -parameter package_name
rpm的查询路径: /var/lib/rpm目录下的数据库文件。
parameter说明:
-q : 列出package_name是否已安装到系统中。
-qa:查询系统中安装的所有的包。
-ql :查询package_name中所有文件的安装路径。
-qi :列出package_name中的详细信息,包括开发商,版本,说明等。
-V :若package_name被修改过,则将其列出。
2. 以下我们以在RHEL5.4下安装oracle 10g为例,通过查询所需的软件包来介绍rpm的查询功能。
Sample 1 :查询某套件是否已安装,如要查询binutils-2.15.92.0.2-13.EL4是否已安装,如下:
[root@localhost ~]# rpm -q binutils
binutils-2.17.50.0.6-12.e15 --表明包binutils 已被成功安装,且列出的版本号高于所要查询的版本。
[root@localhost ~]# rpm -q compat-db
package compat-db is not installed --表明包compat-db没有被安装到系统中
Sample 2 :查询binutils-2.15.92.0.2-13.EL4的详细信息:
[root@localhost ~]# rpm -qi binutils --结果省略
Sapmle 3 :查询binutils-2.15.92.0.2-13.EL4的所有目录与文件:
[root@localhost ~]# rpm -ql binutils --结果省略
四、RPM的安装卸载功能
通过RPM查询功能我们可以得到某些软件包是否已安装到系统中以及列出其路径,详细信息等。对于那些没有安装到系统中,且由于相关程序的依赖性,需要将其安装的系统中,我们同样可以通过RPM来完成,格式同上所述,仅仅是给RPM不同的参数而已。当然也可以对其已安装的软件包进行升级或卸载。
1. 安装软件包。同RPM查询功能中介绍的格式一样,仅仅将parameter改为 ivh 即可。ivh通常组合在一起使用,也可以分开使用。i代表install的意思,v则表示显示更详细的安装信息,h表示显示安装进度。因此本人更倾向于同时使用上述三个参数。
Sample 1 :安装我们前一节所述的不存在的compat-db包
[root@localhost ~]# rpm -ivh compat-db-4.1.25-9
这里将安装结果图截屏供大家参考:
可以到Google搜索该软件包,也可以到以下网址下载:http://linuxsoft.cern.ch/cern/slc4X/i386/yum/os/repodata/repoview/compat-db-0-4.1.25-9.html
当然也可以通过网址来安装该软件包,前提是你的Linux系统能正常连接到Internet。
如:[root@localhost ~]# rpm -ivh http://linuxsoft.cern.ch/cern/slc4X/i386/yum/os/compat-db-4.1.25-9.i386.rpm
Sample 2: 同时安装多个软件包,只要在参数ivh后面跟多个软件包即可,请确保路径可以正确找到所需的软件包。
[root@localhost ~]# rpm -ivh compat-db-4.1.25-9 compat-libstdc++-296-2.96-132.7.2
2. 更新与卸载软件包
此处包括更新软件包和卸载软件包,下面分开叙述。
更新软件包的情况,以下仅提供参数说明,命令格式规范同前所述:
参数:-Fvh,对于已安装的旧版软件包,系统自动更新,对于没有安装后的后续软件包系统则不会更新。
-Uvh,对于已安装的旧版软件包,系统自动更新,对于没有安装后的后续软件包系统直接安装。
卸载软件包的情况,以下仅提供参数说明,命令格式规范同前所述:
参数:-e 卸载package_name中指定的软件包。
注:关于SRPM的使用涉及到编译的过程,在此不作叙述。