在Red Hat Linux推出RPM包之前,Linux操作系统下的软件主要以源码形式发布。对于使用者而言需要自行编译软件,安装和卸载都不方便,门槛较高。而预编译好的程序经常因为库文件依赖性问题而导致无法使用。
RPM 是 Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理;在Fedora 、Redhat、Mandriva、SuSE、YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用。
RPM里面都包含可执行的二进制程序,这个程序和Windows的软件包中的.exe文件类似是可执行的;RPM包中还包括程序运行时所需要的文件,这也和Windows的软件包类似,Windows的程序的运行,除了.exe文件以外,也有其它的文件。
一个RPM 包中的应用程序,有时除了自身所带的附加文件保证其正常以外,还需要其它特定版本文件,这就是软件包的依赖关系。
RPM常用命令中的各种缩写选项,其实是有依据的我们可以参考下方:
q | query (查询) |
---|---|
p | package(包) |
i | information(信息) |
l | list(列表) |
f | file(文件) |
c | conf(配置文件) |
V | verfity(校验) |
R | requires(依赖性) |
Red Hat Package Manager ( 简称RPM )工具包由于其使用简单操作方便,可以实现软件的查询、安装、卸载、升级和验证等功能,为Linux使用者节省大量时间,所以被广泛应用于Linux下安装、删除软件。 rpm命令格式: rpm [option] [软件安装包路径I名称] RHEL5安装光盘的软件包存放在光盘根目录的Server目录中
.RPM软件包通常具有类似dhcp-3.0.5-18.el5.i386.rpm的文件名。其中包括软件包的名称(dhcp),版本号 (3.0.5-18),发行版(el5),和硬件平台(i386)。安装一个软件包只需简单的键入以下命令:
rpm -ivh PackageName
参数 | 全称 | 解释 |
---|---|---|
i | install | 安装 |
v | verbose | 显示安装过程信息 |
h | hash | 用 "#" 符号表示安装进度 |
[root@bogon Server]#rpm -ivh dhcp-3.0.5-18. el5.i386.rpm
Preparing... ####################### [100%]
1:dhcp ####################### [100%]
●RPM安装完毕后会打印出软件包的名字(并不一定与文件名相同),而后打印一连串的#号以表示安装进度。
如果的软件包已被安装,将会出现以下信息: $ rpm -ivh gedit-2. 16.0-9.el5.i386.rpm Preparing....#################1#111111## [100%] package gedit-2.16.0-9.el5.i386 is already installed 如果仍旧要安装该软件包,可以使用"--replacepkgs"选项,RPM将忽略该错误信息强行安装。
[root@bogon Server]#rpm -ivh gedit-2.16.0-9.el5.i386.rpm --replacepkgs
如果要安装的软件包中有一一个文件已在安装其它软件包时安装,会出现以下错误信息:
[root@bogon Server]# rpm -ivh foo-1.0-1.i386.rpm
foo /usr/bin/foo conflicts with file from bar-1.0-1
error: foo-1.0-1 .i386.rpm cannot be installed
要想让RPM忽略该错误信息,请使用--replacefiles命令行选项。
[root@bogon Server]#rpm -ivh foo-1.0-1 .i386.rpm --replacefiles
●RPM软件包可能依赖于其它软件包,也就是说要求在安装了特定的软件包之后才能安装该软件包。如果在您安装某 个软件包时存在这种未解决的依赖关系。会产生以下信息:
[root@bogon Server]#rpm -ivh httpd-2.2.3-22.el5.i386.rpm
error: Failed dependencies:
libapr-1 so.0 is needed by httpd-2.2.3-22 .el5.i386
libaprutil-1 .so.0 is needed by httpd-2.2.3-22.el5.i386
// A B B依赖A
●必须安装完所依赖的软件包,才能解决这个问题。如果想强制安装(安装后的软件包未必能正常运行),请使用"--nodeps"命令行选项。 //尽量不要这么操作
[root@bogon Server]#rpm -ivh httpd-2.2.3-22.el5.i386.rpm --nodeps
rpm -e PackageName
参数 | 全称 | 解释 |
---|---|---|
e | erase | 删除 |
[root@bogon Server]#rpm -e httpd //只写文件名称即可
参数 | 全称 | 解释 |
---|---|---|
U | Update | 更新 |
v | verbose | 显示安装过程信息 |
h | hash | 显示安装进度 |
[root@bogon Server]#rpm -Uvh foo-2.0-1.i386.rpm
RPM将自动卸载已安装的老版本的foo软件包,不会看到有关信息。事实上您可能总是使用-U来安装软件包,也能正常运行。因为RPM执行智能化的软件包升级,自动处理配置文件,系统可能提示: saving /etc/foo.conf as /etc/foo.conf.rpmsave。这表示对配置文件的修改不一定能向上兼容。因此,RPM会先备份文件再安装新文件。 另一个可能碰到的问题是:当使用旧版本的软件包来升级新版本的软件时, RPM会产生以下错误信息:
[root@bogon Server]#rpm -Uvh foo-1.0-1.i386.rpm
foo package foo-2.0-1 (which is newer) is already installed
error: foo-1.0-1.i386.rpm cannot be installed
●如果确有 需要将该软件包降级,使用--oldpackage选项即可。
●可以使用命令:rpm -q 来查询已安装软件包的数据库。简单的使用命令rpm-q foo会打印出 foo软件包的包名,版本号和发行号:
[root@bogon Server]#rpm -q foo
foo-2.0-1
除了指定软件包名以外,还可以使用以下选项来指明要查询哪些软件包的信息。这些选项被称之为“软件包指定选项”。
[root@bogon Server]#rpm -qa //查询所有已安装的软件包
1、如果您误删了一些文件,但不能肯定到底都删除了那些文件,可以使用:
参数 | 全称 | 解释 |
---|---|---|
V | Vertify | 校验 |
a | all | 所有 |
[root@bogon Server]#rpm -Va
校验功能:会在屏幕上显示出文件删除的情况。若发现-些文件丢失了或已被损坏,就可以重新安装或先卸载。 2、如果您碰到了一个自己不认识的文件,要想查处它属于哪个软件包,您可以输入以下命令:
参数 | 全称 | 解释 |
---|---|---|
q | query | 查询 |
f | file | 文件 |
[root@bogon Server]#rpm -qf /usr/X11R6/bin/xjewel
输出的结果会是: xjewel-1.6-1
3、如果想了解koules的RPM包在系统里安装了哪些文件,可以键入:
参数 | 全称 | 解释 |
---|---|---|
q | query | 查询 |
l | list | 文件列表 |
p | package | 软件包 |
[root@bogon Server]#rpm -qlp koules-1.2-2.i386.rpm
yum (全称为yellow dog updater,Modified)是一个 在Fedora 和RedHat以及CentOS中的Shell前端软件包管理器。基于 RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。注意RHEL中,Yum必须更换更新源才能正常使用。
yum的常用操作:
命令 | 解释 |
yum install PackageName | 安装指定的安装包 |
yum update | 全部更新 |
yum update PackageName | 更新指定程序包 |
yum check-update | 检查可更新的程序 |
yum list | 显示所有已经安装和可以安装的程序包 |
yum list PackageName | 显示指定程序包安装情况 |
yum remove PackageName | 删除程序包 |
yum clean packages | 清除缓存目录下的软件包 |
yum info PackageName | 显示安装包信息PackageName |
将Linux光盘镜像放入光驱,并选择“连接”,确定后使用“mount /dev/cdrom /mnt”挂载光盘到/mnt
1、使用rpm命令卸载系统中的gedit;
[root@bogon Server]#rpm -e gedit
[root@bogon Server]#rpm -e gedit
error:package gedit is not installed
2、使用rpm命令查询系统中有没有安装httpd;
[root@bogon Server]#rpm -q httpd
httpd-2.2.3-22.el5
[root@bogon Server]#
3、使用rpm命令查询系统中安装的所有软件包;
rpm -qa
4、从安装光盘中安装gedit;
[root@bogon Server]#rpm -ivh gedit
warning: gedit-2.16.0-9.el5.i386.rpm: Header V3 DSA signature:NOKEY,key ID 370
17186
Preparing... ######################################[100%]
1:gedit #######################################[100%]
[root@bogon Server]#
5、再次卸载gedit后,使用升级安装gedit;
[root@bogon Server]#rpm -e gedit
[root@bogon Server]#rpm -Uvh gedit-2.16.0-9.el5.i386.rpm
warning: gedit-2.16.0-9.el5.i386.rpm: Header V3 DSA signature:NOKEY,key ID 370
17186
Preparing... #######################################[100%]
1:gedit #######################################[100%]
[root@bogon Server]#
6、查看gedit的软件包将往系统中安装哪些文件;
[root@bogon Server]#rpm -qlp gedit-2.16.0-9.el5.i386.rpm
7、删除/usr/bin/gedit后,查询gedit软件包是否完整,找出缺失文件;
[root@bogon Server]#rm /usr/bin/ gedit-2.16.0-9.el5.i386.rpm
[root@bogon Server]#rpm -V gedit-2.16.0-9.el5.i386.rpm
package gedit-2.16.0-9.el5.i386.rpm is not installed
[root@bogon Server]#
8、使用rpm命令强制覆盖安装gedit;
[root@bogon Server]#rpm -ivh gedit-2.16.0-9.el5.i386.rpm --replacepkgs
warning: gedit-2.16.0-9.el5.i386.rpm: Header V3 DSA signature:NOKEY,key ID 370
17186
Preparing... #######################################[100%]
1:gedit #######################################[100%]
[root@bogon Server]#
9、查询/etc/gpm-root.conf文件属于哪个软件包;
[root@bogon Server]#rpm -qf /etc/gpm-root.conf
gpm-1.20.1-74.1
[root@bogon Server]#
10、安装httpd软件包,并安装所依赖的软件包
[root@bogon Server]#rpm -ivh httpd-2.2.3-22.el5.i386.rpm
warning:httpd-2.2.3-22.el5.i386.rpm: Header V3 DSA signature:NOKEY,key ID 370
17186
error:Failed dependencies
libapr-1.s0.0 is needed by httpd-2.2.3-22.el5.i386
libaprutil-1.so.0 is needed by httpd-2.2.3-22.el5.i386
[root@bogon ~]#yum install httpd //利用yum进行安装,会自动安装所依赖的的包
[root@bogon ~]# rpm -q httpd
httpd-2.2.3-22.el5
[root@bogon ~]#