红联Linux门户
Linux帮助

Linux rpm命令详解

发布时间:2015-04-23 09:36:45来源:linux网站作者:linux人

一、简介

RPM是RedHatPackageManager的缩写,是由RedHat公司开发的软件包安装和管理程序,同Windows平台上的Uninstaller比较类似。使用RPM,用户可以自行安装和管理Linux上的应用程序和系统工具。RPM可以让用户直接以binary方式安装软件包,并且可替用户查询是否已经安装了有关的库文件;在用RPM删除程序时,它又会聪明地询问用户是否要删除有关的程序。如果使用RPM来升级软件,RPM会保留原先的配置文件,这样用户就不用重新配置新的软件了。RPM保留一个数据库,这个数据库中包含了所有的软件包的资料,通过这个数据库,用户可以进行软件包的查询。RPM虽然是为Linux而设计的,但是它已经移值到SunOS、Solaris、AIX、Irix等其它UNIX系统上了。RPM遵循GPL版权协议,用户可以在符合GPL协议的条件下自由使用及传播RPM。


二、配置

RPM包管理的配置文件是rpmrc,可以使用如下命令进行查找

# locate rpmrc

可以通过如下命令进行查看

rpm --showrc


三、功能

1、初始化rpm 数据库功能;

通过rpm 命令查询一个rpm 包是否安装了,也是要通过rpm 数据库来完成的;所以我们要经常用下面的两个命令来初始化rpm 数据库;

[root@localhost beinan]# rpm --initdb
[root@localhost beinan]# rpm --rebuilddb 注:这个要花好长时间;
注:以上两个参数是极为有用,有时rpm 系统出了问题,不能安装和查询,大多是这里出了问题;

[root@localhost beinan]# updatedb

[root@localhost beinan]# locate 软件名或文件名

提示:通过updatedb,我们可以用 locate来查询一些软件安装到哪里了;系统初次安装时要执行updatedb ,每隔一段时间也要执行一次;以保持已安装软件库最新;updatedb 是slocate软件包所有;如果您没有这个命令,就得安装slocate ;


2、RPM软件包管理功能

1)查询功能:

rpm {-q|--query} [select-options] [query-options]

使用实例

1)查询一个已经安装的文件属于哪个软件包

rpm -qf 文件名

2)查询已安装软件包都安装到何处

rpm -ql 软件名

rpm rpmquery -ql 软件名

3)查看一下已安装软件的配置文件

rpm -qc 软件名

4)查看一个已经安装软件的文档安装位置

rpm -qd 软件名

5)查看一下已安装软件所依赖的软件包及文件

rpm -qR 软件名

6)查看一件软件包所包含的文件

rpm -qpl 文件名


2)软件包的安装、升级、删除

1)常规包安装

-ivh:安装显示安装进度--install--verbose--hash
-Uvh:升级软件包--Update;
-Va:校验所有的RPM软件包,查找丢失的文件[View Lost];
-e:删除包

2)源码包安装

rpm --recompile vim-4.6-4.src.rpm  #这个命令会把源代码解包并编译、安装它,如果用户使用命令:

rpm --rebuild vim-4.6-4.src.rpm   #在安装完成后,还会把编译生成的可执行文件重新包装成i386.rpm的RPM软件包。
 
详细用法请参考:http://ftp.tsingpost.com/index.php/archives/379/


3)网络包安装

# rpm -qpi http://mirrors.kernel.org/Fedora/core/4/i386/os/ Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm
# rpm -ivh http://mirrors.kernel.org/fedora/core/4/i386/os/ Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm

4)指定安装目录:要加 -relocate 参数

rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm  #gaim-1.3.0-1.fc4.i386.rpm指定安装在目录: /opt/gaim 中

3、导入签名功能

rpm --import 签名文件
 
4、rpm软件包抽取文件功能

rpm2cpio file.rpm |cpio -div

提示:抽取出来的文件就在当前目录中的usr 和etc下。