RPM, Redhat Package Manager, 是Redhat公司首先引入的package管理机制。RPM能实现对Linux所有文件高效而
简洁的管理,从而已成为LINUX世界标准的包管理方法。下面我们将通过对rpm命令的介绍来展开RPM包管理之旅。
============
1. RPM包安装
============
1.1. 安装
rpm -ivh openldap-servers-2.2.13-7.4E.x86_64.rpm
-i : 安装
-v: verbose 模式
-h: 显示安装进度
1.2. 测试安装(并非真的安装包。对于确认安装操作会不会被允许,非常有用)
rpm -ivh --test openldap-servers-2.2.13-7.4E.x86_64.rpm
=========
2. 查询
=========
2.1. 查询文件来自哪个RPM 包
[root@mm ~]# rpm -qf /etc/inittab
initscripts-7.93.25.EL-1
2.2. 查询RPM包拥有的文件
[root@mm ~]# rpm -ql initscripts-7.93.25.EL-1
/bin/doexec
/bin/ipcalc
/bin/usleep
/etc/X11/prefdm
/etc/adjtime
/etc/initlog.conf
2.3. 查询系统已经安装的RPM包
[root@mm ~]# rpm -qa | less
basesystem-8.0-4
chkconfig-1.3.13.4-1
iputils-20020927-18.EL4.3
device-mapper-1.02.07-4.0.RHEL4
一个常用的操作是检查指定的包是否已被安装
[root@mm ~]# rpm -qa | grep initscripts-7.93.25.EL-1
initscripts-7.93.25.EL-1
2.4. 查询包的属性
[root@mm ~]# rpm -qi initscripts-7.93.25.EL-1
Name : initscripts Relocations: (not relocatable)
Version : 7.93.25.EL Vendor: Red Hat, Inc.
Release : 1 Build Date: Fri 21 Apr 2006 09:27:05 AM CST
Install Date: Fri 23 May 2008 05:25:01 PM CST Build Host: hs20-bc1-4.build.redhat.com
Group : System Environment/Base Source RPM: initscripts-7.93.25.EL-1.src.rpm
Size : 3507210 License: GPL
2.5. 查询包在系统上的依赖关系
[root@mm ~]# rpm -q -R initscripts-7.93.25.EL-1
/bin/awk
/bin/bash
/bin/grep
...
从上面我们看到,initscripts 包依赖于/bin/awk等等文件,即如果没有这些文件的存在,initscripts包是无法被正常安装的。在我们安装RPM包时,包的依赖是RPM包安装过程中常见的问题,这要求用户在这个过程中找到问题的所在,并解决问题。
=========
3. 更新
=========
3.1. 升级(upgrade)
rpm -Uvh openldap-servers-2.2.13-7.4E.x86_64.rpm
3种情况 -
1)当前系统上的openldap-servers是一个旧的版本,那么旧的版本将会被替代;
2)当前系统上openldap-servers包没有安装,那么包会被正常安装;
3)当前系统上openldap-servers的版本并不比用户将要按装的版本旧,新包将不会被安装。
3.2. 更新(freshen)
rpm -Fvh openldap-servers-2.2.13-7.4E.x86_64.rpm
和RPM包升级的操作效果差不多,区别在于:
如果指定的包在当前的系统上并没有旧版本存在,包将不会被安装。
因为,很多时候用户会用下面的操作去更新RPM包。
rpm -Fvh *.rpm
所以这个操作的好处就在于,他不会引入新的RPM包。
=========
4. 卸载
=========
[root@mm ~]# rpm -e quota-3.12-5
-e: 卸载指定的包
=========
5. 释放RPM包中的文件
=========
RPM包的本质是许多文件的一种归档形式。如果想从RPM包中提取某一个文件,我们可以将他先安装,然后找到我们要的文件。这里我们介绍一种简单而安全的方法:
[root@mm expect]# rpm2cpio ../expect-5.42.1-1.i386.rpm | cpio -div
./usr/bin/autoexpect
./usr/bin/dislocate
./usr/bin/expect
./usr/bin/ftp-rfc
./usr/bin/kibitz
./usr/bin/lpunlock
./usr/bin/mkpasswd
他将把RPM包中的文件释放到当前文件夹中。
上面介绍了rpm的各种管理性操作,对付LINUX包的日常管理应该应付自如了。当然对于rpm,还有许多的功能没有介绍,所以一定不要忘了"man rpm " :)
Reference:
1. rpm manual
rpm 是一个强大的命令,他的功能还有很多.
2. http://rpmfind.net/
正如上面提到的,RPM安装过程中包的依赖是一个很麻烦的事情。所以我们经常要去查找我们需要的包。上面的website提供了丰富的RPM包资源,值得一试 :)