【前言】
当我们使用rpm命令安装程序时,时常会因为程序包之间的依赖关系而焦头烂额,使得很多程序的安装过程复杂而费力,那有没有一种工具可以帮我们解决这个问题呢?当然有啦!这就是我们今天的重点yum,让我们一块来学习总结下吧!
【什么是yum】
yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
【yum的工作机制】
yum 的关键之处是要有可靠的yum仓库(yum repository),它可以是http 或ftp 站点,也可以是本地软件池,其必须包含两类数据:
1、数据:也就是各个rpm包;
2、元数据:其包含了rpm 包的各种信息,包括包名、描述,功能,提供的文件,依赖关系、包分组信息等。正是通过收集汇总这些元数据 并加以分析,才能自动化地完成余下的任务。在各版本系统下其的存储格式为:CentOS5: *.xml; centos6,7: *.sqlite
其实从架构的角度来看,yum的工作机制为C/S架构,如下图所示:
【yum的使用机制】
1、确保有yum repo(yum仓库的配置文件)可用;rpm包的文件服务器,repodata目录所在父目录就是一个可用仓库。
2、yum客户端需要指供repo配置文件,指明yum仓库访问路径及各种属性信息。有两种配置方法:
法一:修改主配置文件(中心配置文件):/etc/yum.conf;
法二:在/etc/yum.repos.d/下创建或修改*.repo文件(存储一个或几个相关仓库的配置信息)。
在.repo文件定义一个yum repo指向的格式:
[REPOID] #定义软件源的名称,该名称是可以自定义,同时在该服务器上所有repo文件中是唯一的。注意[]中不能有空格;
name=Some name for this repository #定义软件仓库的名称,支持像$releasever 、$basearch这样的变量;注意=两边不能有空格;
baseurl=url://server/path/to/repository #指定真正的仓库所在地,可以给定多个,下面的URL不能顶格书写,URL中也支持$releasever 、$basearch这样的变量;
$releasever/os/$basearch
enabled={0|1} #配置此仓库是否启用,默认为1生效;
gpgcheck={0|1} #配置是否验证安装包,0为不进行验证,1为进行验证;
gpgkey=URL #指定用于验证的秘钥文件
cost={1..n} #默认为1000,指定访问此仓库的开销(在客户端指定)
补充说明:
1、$basearch: 系统基本架构,如i686,i586等的基本架构为i386;
$releasever: 程序的版本,对yum而言指的是redhat-release版本;只替换为主版本号,如RedHat 6.5,则替换为6;
2 、baseurl种url支持的协议有:、ftp://、nfs://、file://、 rsync://;当需要指定多个URL且不想通过baseurl来指定时, 我们可以把多个URL存放在一个文件里,通过mirrorlist=存放URL的文件来指定yum仓库。
3、一个.repo文件可以定义多个yum仓库。
[root@CentOS6 yum.repos.d]# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
[root@CentOS6 mnt]# cat /etc/yum.repos.d/CentOS-Media.repo
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
file:///media/cdrom/
file:///media/cdrecorder/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[root@CentOS6 yum.repos.d]#
【yum客户端命令的使用】