RPM包管理命令rpm

RPM包管理器是由Red Hat推出的应用软件管理器(过去的RPM就是Red Hat Package Manager的缩写)。RPM包管理器是Linux系统中最早的软件包管理软件之一,也是目前最流行的软件包管理器,许多发行版都使用RPM作为默认的软件包管理软件。

一、RPM包管理器简介

【软件依赖性】

与Windows系统中的软件不同,Linux系统中的软件将不同的功能模块单独写入到不同的软件包中,最后将多个相互依存的软件包结合起来形成一个应用程序。虽然这在Windows中也经常使用,但Linux系统中的软件模块划分得更小、功能更单一。因此在安装功能性软件时,通常需要安装许多与其具有依赖关系的软件包,这就是Linux系统中的软件依赖性。

【RPM包管理器】

在早期的系统中,安装应用程序是一件非常麻烦的事情,需要编译许多软件包才能完成应用程序的安装。为了解决这个问题,Red Hat公司开发了一个包管理器,早期的包管理器名为Red Hat Package Manager。

虽然名中带有Red Hat,但这是一个基于GPL协议的开源软件。Red Hat公司鼓励广大的Linux系统发行商了解和使用RPM包管理器。由于Red Hat的积极推广,现在许多Linux发行版都使用RPM作为默认的包管理器。现在RPM的含义是RPM Package Manager,有RPM社区负责维护。

【RPM软件包名称格式】

RPM软件包名称都有一个固定的格式,以文件服务程序Samba的客户端软件包为例,格式为samba-client-3.0.33-3.7.el5.i386.rpm。这个软件包名称中各部分的含义如下:

samba-client:最前面的为软件包名称。

3.0.33-3.7:3.0.33表示软件包的主要版本号,紧跟在后面的3.7表示软件发布的次要版本号。

el5:表示适用于Red Hat Enterprise Linux 5系统。fc6表示适用于Fedora Core Linux 6系统。

i386:表示硬件平台。有些软件包的硬件平台为noarch,表示该软件包没有硬件平台的限制。

.rpm:表示这是一个RPM软件包。有些软件包最后是src.rpm,表示软件包内含有源代码。

二、rpm命令基本格式

【命令格式】

rpm [option…]

【常用选项】

q:使用查询模式。

a:查询所有软件包。

i:显示详细信息。如果指定了软件包,则安装软件包。

l:显示软件包的文件列表。

p:查询指定的软件包。

f:查询指定文件所属软件包。

v:显示命令执行过程。

h:安装软件包时显示进度信息。

e:卸载指定的软件包。

U:升级软件包。

force:长格式选项,强制操作,忽略操作过程中的冲突。

nodeps:长格式选项,忽略操作过程中的软件依赖性,强制操作。

oldpackages:忽略冲突,强制升级软件包。

在上面的选项中,显示详细信息选项i对应的长格式为info;而安装软件包时,其对应的长格式为install。这两个长格式对应的短格式选项都是i,使用时需注意区别。

三、使用rpm命令查询软件包

1、查询已安装的软件

(1)例如要查询系统中是否装有一个名为samba-client的软件包:

[root@localhost ~]# rpm -q samba-client

提示:使用选项q加软件包名的方式查询时,必须使用软件包全名,否则将无法查询到任何结果。

(2)有时可能会忘记某个软件包的具体名称,此时可以使用选项a显示系统中已经安装的所有软件包:

[root@localhost ~]# rpm -qa

(3)为了能够使用模糊查询,可以在查询全部软件包的同时,配合使用grep命令模糊查询。例如查询当前系统中软件名称包含ssh的软件包:

[root@localhost ~]# rpm -qa | grep ssh
openssh-clients-4.3p2-24.el5
openssh-4.3p2-24.el5
openssh-server-4.3p2-24.el5
openssh-askpass-4.3p2-24.el5

(4)许多时候需要查看软件包的详细信息。这是可以配合使用选项i,显示指定软件包的详细信息。例如查看软件包chkconfig的详细信息:

[root@localhost ~]# rpm -qi chkconfig
Name        : chkconfig                    Relocations: (not relocatable)
Version     : 1.3.30.1                          Vendor: Red Hat, Inc.
Release     : 1                             Build Date: Sat 02 Dec 2006 03:29:31 AM CST
Install Date: Tue 12 Nov 2013 11:52:00 PM CST      Build Host: hs20-bc2-2.build.redhat.com
...

2、查询软件包中的文件

查询软件包中的文件主要使用选项l和f。

(1)查看软件包chkconfig中包含的详细文件列表:

[root@localhost ~]# rpm -ql chkconfig
/etc/alternatives
/etc/init.d
/etc/rc.d/init.d
/etc/rc.d/rc0.d
/etc/rc.d/rc1.d
...

(2)查看软件包的安装文件中的文件列表,这时可以使用选项p指定输入的参数为一个软件包文件:

[root@localhost ~]# rpm -qpl samba-client-3.0.33-3.7.el5.i386.rpm

(3)也可以使用选项p和i查看软件包的概况:

[root@localhost ~]# rpm -qpi samba-client-3.0.33-3.7.el5.i386.rpm

(4)有时也可能需要反向查询一个文件对应的软件包,这种情况可能是无意中删除了一个文件,需要知道应该重新安装的软件包的名称。这是可以使用选项f指定要查询的文件。例如:

[root@localhost ~]# rpm -qf /bin/ls
coreutils-5.97-12.1.el5

此时就可以重新安装命令输出的软件包,恢复删除的文件。

四、使用rpm命令安装软件包

注意:安装下载的软件包时,应该注意软件包对应的版本和硬件平台,否则可能出现无法安装或安装后无法正常使用的情况。

【获取软件包】

获取软件包有两种方法:(1)RHEL5.3的光盘(或光盘镜像)中自带的软件包,通常位于光盘根目录的Server子目录中。(2)从互联网下载软件包。

如果手边没有现成的安装光盘,也不知道软件的官方网站,可以尝试在Repoforge.org的软件仓库中查找。

Repoforge.org软件包仓库:http://pkgs.repoforge.org/    它是一个专业提供软件包、源码的下载站点。

(1)最常用的安装选择组合:

[root@localhost ~]# rpm -ivh gcc-4.1.2-44.el5.i386.rpm

(2)许多安装包会遇到依赖性问题,即在安装应用程序之前,应该先安装能让应用程序正常工作的前提软件包。

如果遇到软件包存在依赖性问题,应该先安装软件所依赖的前提软件包,或在同一条命令中同时安装前提软件包(只需将多个rpm包以空格分开都放在rpm –ivh 后面即可)。

(3)有时管理员肯能需要忽略软件包的依赖性,强制安装软件包,此时可以使用选项nodeps,这个选项适合于依赖性错误的情况,例如有些软件包可能会依赖其自身或间接依赖其自身。

  有时误删除一个文件,需要重新安装时,rpm命令会提示文件冲突,此时可以使用选项force忽略软件包、文件冲突,强制安装软件包。

五、使用rpm命令卸载软件包

[root@localhost ~]# rpm -e samba-client

六、使用rpm命令升级软件包

(1)使用选项U升级软件包(假设原来系统中安装了比bzip2-libs-1.0.3-3版本低的bzip2-libs版本,现在可以使用bzip2-libs-1.0.3-3.i386.rpm软件包升级原来的低版本为bzip2-libs-1.0.3-3版本):

[root@localhost Server]# rpm -Uvh  bzip2-libs-1.0.3-3.i386.rpm

(2)由于系统中安装有低版本的软件,因此在安装过程中可能会出现冲突,导致升级失败,此时可以使用选项oldpackage强制升级:

[root@localhost Server]# rpm -Uvh --oldpackage bzip2-libs-1.0.3-3.i386.rpm
原文地址:https://www.cnblogs.com/nufangrensheng/p/3474090.html