Linux学习之——软件包管理 rpm(八)

 RPM  介绍

       在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 命令参数含义

RPM常用命令中的各种缩写选项,其实是有依据的我们可以参考下方:

q query (查询)
p package(包)
i information(信息)
l list(列表)
f file(文件)
c conf(配置文件)
V verfity(校验)
R requires(依赖性)

1 使用rpm命令管理RPM包

Red Hat Package Manager ( 简称RPM )工具包由于其使用简单操作方便,可以实现软件的查询、安装、卸载、升级和验证等功能,为Linux使用者节省大量时间,所以被广泛应用于Linux下安装、删除软件。 rpm命令格式: rpm [option] [软件安装包路径I名称] RHEL5安装光盘的软件包存放在光盘根目录的Server目录中

2 安装RPM包

.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安装完毕后会打印出软件包的名字(并不一定与文件名相同),而后打印一连串的#号以表示安装进度。

3 安装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

4 安装RPM包-文件冲突

如果要安装的软件包中有一一个文件已在安装其它软件包时安装,会出现以下错误信息:

[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
​

5、安装RPM包-未解决依赖关系

●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

6、删除软件包

rpm -e PackageName

参数 全称 解释
e erase 删除

 [root@bogon Server]#rpm -e httpd   //只写文件名称即可

7、升级RPM包升级软件包命令:

参数 全称 解释
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选项即可。

8、查询安装的安装包

●可以使用命令:rpm -q 来查询已安装软件包的数据库。简单的使用命令rpm-q foo会打印出 foo软件包的包名,版本号和发行号:

 [root@bogon Server]#rpm -q foo
​
foo-2.0-1

除了指定软件包名以外,还可以使用以下选项来指明要查询哪些软件包的信息。这些选项被称之为“软件包指定选项”。

 [root@bogon Server]#rpm -qa    //查询所有已安装的软件包

9、其它常用RPM的选项

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

10、yum的使用

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 ~]#

猜你喜欢

转载自blog.csdn.net/xiaohaiguang/article/details/105169379