软件包管理器(RPM)yum

RPM的全名是“RedHat Package Manager”,简称RPM,由此可以看出RPM是由RedHat公司开发的软件包管理工具。

RPM是以一种数据库记录的方式将所有需要的套件安装到linux主机的一套管理程序,它摆脱了用户在安装套件是的麻烦步骤,使程序的安装、卸载升级变得简单。它最大的优点就是将要安装的套件先编译并打包,通过包装好的套件中默认的数据库记录,记录这个套件在安装的时候需要的依赖关系,并在linux主机中查询依赖关系是否满足,若依赖关系满足则能安装,否则不给予安装。它本身为已经编译过的二进制文件,可以让用户免除重新编译的麻烦。

在学习RPM命令之前,先了解一下RPM包得格式:

软件包名称  -  软件的版本信息  -  发布次数  .适合的硬件平台  .扩展名

   bind      -  9.7.1        -    1     .el5.i586   .rpm

RPM包安装:

格式:rpm -i 软件包全名

      rpm -i:安装

             -h:以#显示进度,每个#表示2%的进度

             -v:显示详细过程

             -vv:显示更详细的过程

             --nodeps:忽略依赖关系

             --replacepkegs:重新安装,替换原有安装

             --force:强行安装,可以实现重装或降级

             --test:测试安装,不安装,测试软件是否可以再安装

            rpm -i --test zsh-4.2.6-6.el5.i386.rpm

例:rpm -ivh zsh-4.2.6-6.el5.i386.rpm

软件包管理RPM及YUM_YUM

RPM包查询:

格式:rpm -q 软件包名称

      rpm -q:查询已安装的包

             -a:查询已经安装的所有包

               rpm -qa

             -i:查询指定包得说明信息

               rpm -qi zsh

             -l:查询指定包安装后生成的文件路径

               rpm -ql zsh

             -c:查询指定软件包安装的配置文件

               rpm -qc zsh

             -d:查询指定包安装的帮助文件

               rpm -qd zsh

             -f /path/to/somefile:查询指定文件是由哪个rpm包安装生成的

               rpm -qf /path/to/somefile

             --scripts:查询指定包中包含的脚本

例:查询我们刚才安装的包zsh-4.2.6-6.el5.i386.rpm,命令:rpm -q zsh

 

软件包管理RPM及YUM_YUM_02

如果某个rpm包尚未安装,我们需要查询其说明信息,以及安装以后会生成的文件。

格式:rpm -qp 软件包全名

            rpm -qpi:软件包的信息

              rpm -qpi zsh-4.2.6-6.el5.i386.rpm

            rpm -qpf:软件包安装后生成的文件

              rpm -qpf zsh-4.2.6-6.el5.i386.rpm

RPM包升级:

rpm -Uvh 软件包全名:如果装有老版本的,则升级;否则,则安装

        rpm -Fvh  软件包全名:如果装有老版本的,则升级;否则,退出

                --oldpackage:降级

例:rpm -Uvh --force zsh-4.2.6-6.el5.i386.rpm 强行升级并安装

软件包管理RPM及YUM_YUM_03

RPM包卸载:

格式:rpm -e 软件包名称

例:卸载zsh-4.2.6-6.el5.i386.rpm,命令rpm -e zsh

软件包管理RPM及YUM_RPM_04

我们卸载zsh包后在查询安装的包,可见no installed,卸载成功!

RPM包检验:

格式:rpm -V 软件包名称:检查安装包文件是否被改动过

        如: rpm -V zsh

      rpm -K 软件包全名:检验来源合法性,及软件包完整性

在用 rpm -K命令前我们必须先密钥文件,命令为:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release:导入密钥

例:我们检查zsh-4.2.6-6.el5.i386.rpm的合法性

软件包管理RPM及YUM_RPM_05

dsagpg:验证来源合法性的,也即签名,可以使用--nodignature,略过次此项

sha1md5:验证软件包完整性;可以使用--nodigest,略过此项

RPM重建数据库:

      rpm --rebuilddb:重建数据库,重新创建数据库

      rpm --initdb:初始化数据库,如果没有就创建,有就不用创建

 由于RPM的历史原因,软件之间的依赖关系RPM并没有得出很好的定义,使其在安装软件时还会出现一些令人恼火的软件依赖关系,为了更好的解决软件之间的依赖关系,开源社区就推出了yum工具,使用户更好的解决依赖关系。Yum也是运行在redhat系统上的。

Yum可以实现自动化升级,安装、移除rpm包,收集rpm包的信息,yum的关键之处是它有个yum库,在库内有软件包得各种信息,功能,软件以及依赖关系,正是收集了这些数据并加以进行分析,才使yum能自动化的解决rpm不能解决的功能。

Yum库中的元文件:

primary.xml.gz

所有RPM包的列表

依赖关系

每个RPM安装生成的文件列表

filelists.xml.gz

当前仓库中所有RPM包的所有文件

other.xml.gz 

额外信息,RPM包的修改日志

repomd.xml

记录的是上面三个文件的时间戳和校验和

 Yum命令:

yum [options] [command] 

yum clean:清除yum缓存

all:清除缓存的所有文件

headers:清除缓存中的rpm头文件

packages:清除缓存中rpm包文件

yum list:显示软件包列表

all:显示所有软件包列表

available:可用的,仓库中有,且尚未安装的

installed:已经安装的

updates:可用的升级

yum repolist:显示yum

all:显示所有的库

disabled:显示禁用的库

enabled:默认显示

yum install 软件包名称:安装软件包

yum update 软件包名称:升级

Update_to:升级为指定版本

yum remove|erase 软件包名称:卸载软件包

例:用yum安装zsh-4.2.6-6.el5.i386.rpm,命令yum install zsh yum install zsh -y

软件包管理RPM及YUM_RPM_06

例:查看zsh是否安装,查找命令 yum list zsh

软件包管理RPM及YUM_YUM_07

例:卸载安装好的zsh包,命令:yum remove zsh

软件包管理RPM及YUM_RPM_08

其他命令用法相同,不在演示!