RPM
是RedHat Package Manager
(RedHat软件包管理工具),是由RedHat公司开发的软件包安装和管理程序,同Windows平台上的Uninstaller比较类似。
rpm
执行安装包
二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。
rpm
包名字构成由-
和.
分成了若干部分,如abrt-cli-2.0.8-15.el6.centos.i686.rpm
,abrt-cli
是包名,2.0.8-15
是版本号,el6
指的是redhat企业版6,centos指的是这是在centos上用的,i686指的是平台类型。有些rpm
包并没有写具体的平台而是noarch
,这代表这个rpm
包没有硬件平台限制。
rpm
的一般格式:
rpm [选项] [rpm软件包]
1、初始化rpm
数据库(可以省略)
rpm --initdb rpm --rebuilddb % 注:这个要花好长时间
注:有时rpm
系统出了问题,不能安装和查询,大多是这里出了问题。
2、RPM
软件包管理的查询功能:
rpm -q [select-options] [query-options]
RPM
的查询功能是极为强大,是极为重要的功能之一;这里举几个常用的例子,更为详细的具体的,请参考 man rpm
应用实例:
对系统中已安装软件的查询
1)查询系统已安装的软件
语法:rpm -q 软件名
例:
rpm -q gaim
-q
就是 --query
,此选项表示询问系统是不是安装了gaim
软件包;
如果已安装会有信息输出;如果没有安装,会输出gaim
没有安装的信息;
查看系统中所有已经安装的包,要加 -a
参数
rpm -qa
如果分页查看,再加一个管道 |
和more
命令
rpm -qa |more
如果要查找某个软件包,可以用 grep
抽取出来
rpm -qa |grep mplayer
2)查询一个已经安装的文件属于哪个软件包;
语法: rpm -qf 文件名
注:文件名所在的绝对路径要指出
例:
rpm -qf /usr/lib/libacl.la
3)查询已安装软件包都安装到何处;
语法:rpm -ql 软件包名
例:
rpm -ql mplayer
4)查询一个已安装软件包的信息
语法: rpm -qi 软件包名
例:
rpm -qi mplayer
5)查看一下已安装软件的配置文件;
语法格式:rpm -qc 软件名
例:
rpm -qc mplayer
6)查看一个已经安装软件的文档安装位置:
语法格式: rpm -qd 软件名
例:
rpm -qd mplayer
7)查看一下已安装软件所依赖的软件包及文件;
语法格式: rpm -qR 软件名
例:
rpm -qR mplayer
注:可以把几个参数组合起来用,如 rpm -qil mplayer
对于未安装的软件包的查看 :
查看的前提是当前目录下已存在一个.rpm
文件。
1)查看一个软件包的用途、版本等信息;
语法: rpm -qpi file.rpm
例:
rpm -qpi mplayer-1.0pre7try2-2.i386.rpm
2)查看一件软件包所包含的文件;
语法: rpm -qpl file.rpm
例:
rpm -qpl mplayer-1.0pre7try2-2.i386.rpm
3)查看软件包的文档所在的位置;
语法: rpm -qpd file.rpm
例:
rpm -qpd mplayer-1.0pre7try2-2.i386.rpm
4)查看一个软件包的配置文件;
语法: rpm -qpc file.rpm
例:
rpm -qpc mplayer-1.0pre7try2-2.i386.rpm
5)查看一个软件包的依赖关系
语法: rpm -qpR file.rpm
例:
rpm -qpR mplayer-1.0pre7try2-2.i386.rpm
3、软件包的安装、升级、删除等; 安装和升级一个rpm
包
语法:
rpm -ivh file.rpm 这个是用来安装一个新的rpm 包 rpm -Uvh file.rpm 这是用来升级一个rpm包
-i
表示安装,-v
可视化,-h
显示安装进度 -U
升级
如果有依赖关系的,需解决依赖关系。
如果找不到依赖关系的包,可以用下面的命令强制安装:
rpm -ivh --nodeps --force file.rpm rpm -Uvh --nodeps --force file.rpm
例:
rpm -ivh --test mplayer-1.0pre7try2-2.i386.rpm
--test
表示测试,并不真正安装。
rpm -ivh --relocate /=/usr/local/mplayer mplayer-1.0pre7try2-2.i386.rpm
为软件包指定安装目录:要加 --relocate
参数
安装在指定目录中的程序如何调用呢?
通常可执行程序都放在安装目录下的bin
或者sbin
目录中。
RPM
源代码包装安装
.src.rpm
结尾的文件,这些文件是由软件的源代码包装而成的,用户要安装这类RPM
软件包,必须使用命令:
rpm --recompile vim-4.6-4.src.rpm 这个命令会把源代码解包并编译、安装它,如果用户使用命令: rpm --rebuild vim-4.6-4.src.rpm 在安装完成后,还会把编译生成的可执行文件重新包装成i386.rpm的RPM软件包。
删除一个rpm
包
首先查出需要删除的rpm
包,然后用下面的命令来卸载:
rpm -e 软件包名
例:
rpm -e mplayer 卸载mplayer
如果有其它的rpm
依赖于该rpm
包,系统会出现警告。
如果一定要卸载,可以用选项 --nodeps
忽略依赖关系。但最好不要这么做。
RPM管理包管理器支持网络安装和查询
rpm [选项] rpm包的http或者ftp的地址
比如我们想通过 Fedora Core 4.0
的一个镜像查询、安装软件包。
查询
rpm -qpi http://mirrors.kernel.org/.../RPMS/rsh-0.17-29.rpm
安装
rpm -ivh http://mirrors.kernel.org/.../RPMS/rsh-0.17-29.rpm
对已安装rpm
包查询的一点补充
可以用 locate
来查询一些软件的安装位置,可能需要先运行updatedb
来更新已安装软件库
从rpm
软件包抽取文件
rpm2cpio xxx.rpm | cpio -idmv
i
表示提取文件,v
表示指示执行进程
d
表示根据包中文件原来的路径建立目录
m
表示保持文件的更新时间