一、概述
Yum (全称为:Yellow dog Updater, Modified),是一个基于RPM 包管理的字符前端软件包管理器。能够从指定的服务器自动下载 RPM 包并且安装,可以处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。被Yellow Dog Linux本身,以及Fedora、Red Hat Enterprise Linux采用。
二、Yum结构
Yum遵循C/S架构设计,server端是基于ftp、http、nfs等协议的文件服务器,提供软件仓库,客户端连接服务器获取RPM包并处理依赖关系后安装。
1. server端,提供yum仓库
yum仓库包含:
(1). 数据:各个rpm包
(2). 元数据:是简要的关系型数据库,标明包名、版本信息、各包所包含的文件列表、依赖关系、包分组信息 元数据位于repodata目录下,在CentOS 5上以xml类型文件存在,在CentOS 6上主要以sqlite类 型文件存在。
2.客户端安装软件包策略
第一步: 获取仓库元数据。第一次获取元数据后缓存于本地:/var/cache/yum目录下,之后再访问服务器就
直接使用本地元数据。
第二步: 分析元数据,做出安装决策。yum客户端程序在本地分析元数据文件,并结合本地系统环境(查看已
安装包,已安装的包不会安装)做出要安装的程序包的决策。
第二步: 获取程序包。根据决策联系Yum仓库,下载各程序包缓存于本地后,一并进行安装。
三、yum机制
仓库的类别:
base库:基本库,提供的通常为系统发行版所提供的程序包
updates库:提供的是制作一个新的发行版之前所有更新的程序包
extra库:提供的是base库中不存在的额外的程序包
epel库:fedora epel提供的程序包
注:对于客户端来说,仓库是使用有优先级,例如对于base库和updates库,一般先使用update库。另外,可 以指定仓库的启用或否。
1. 首先应确保有可有的yum 仓库:
yum的server端是rpm包的基于ftp、http、nfs等协议的文件服务器,server端的repodata目录所在父目录就是一 个可用仓库。
2. yum客户端提供repo配置文件,指明仓库访问路径及各种属性信息
配置文件分为主配置文件和repo文件:
(1). 主配置文件:中心配置文件,文件名位于:/etc/yum.conf
(2). repo配置文件:一个或几个相关仓库的配置信息可保存为一个文件,文件名都以.repo结尾,保 存在/etc/yum.repos.d/目录下。
yum.conf中的各条目解释:
cachedir=/var/cache/yum/$basearch/$releasever 仓库元数据系数据本地缓存目录
keepcache=0 缓存的数据安装后是否保存(0表示不保存)
debuglevel=2 调试级别
logfile=/var/log/yum.log 日志文件目录
exactarch=1 平台是否精确匹配才能安装
obsoletes=1 安装包的时候是否检查过期的仓库
plugins=1 是否支持使用yum的插件
在.repo文件定义一个yum repo指向的格式:
[REPOID] 仓库的类型
name= 此处填写仓库的名称
baseurl= 此处填写仓库的所在位置
enabled={0|1} 是否启用此仓库
gpgcheck={0|1} 使用gpg机制检测包来源合法性和完整性
gpgkey=URL 校验key文件所在位置
mirrorlist=URL to a file mirrors指向一个存在可用rul的文件(条目baseurl和mirrorlist二选一)
cost={1..n} 默认为1000,指定此repo文件中url访问仓库的开销,数值越小优先级越高
( yum配置文件中可用的四个变量:
$releasever: 程序的版本,对Yum而言指的是redhat-release版本;只替换为主版本号, 如RedHat 6.5,则替换为6
$arch: 系统架构
$basearch: 当前系统基本架构,如i686,i586等的基本架构为i386
$YUM0-9: 在系统中定义的环境变量,可以在yum中使用 )
四、yum客户端命令的使用
1. 列出所有可用repo(仓库)
命令:yum repolist {enabled|disabled|all}
参数解释:启用的|禁用的|所有
2. 列出仓库中rpm包
命令: yum list {all|installed|available}
参数解释:所有的|已安装的|可安装的
注:支持文件名通配,显示结果中带@符号表示已安装
3. 列出包的描述信息
命令:yum info package_name
4. 列出所有的包组信息
命令:yum grouplist
5. 显示包组的信息
命令:yum groupinfo "GROUP NAME"
例如:yum groupinfo "Server Platform Development"
6. 清理缓存
命令:yum clean {all|packages|metadata|expire-cache|rpmdb|plugins}
参数解释:所有|包|元数据|过期的缓存|rpm数据库|插件
7. 安装程序包
命令:yum install package_name
重新安装命令:yum reinstall package_name
8. 升级
检查可用的升级包命令:yum check-update:
升级程序包:yum update package_name
升级到某个版本,例如:yum update zsh-4.3.10-8
降级到某个版本,例如:yum dowgrade zsh-4.3.10-7
9. 卸载
命令: yum remove package_name 或者,
yum erase package_name
10. 查询某文件是由哪个包安装生成的
命令:yum provides /.../.../file
11. 安装包组
命令:yum groupinstall "GROUP NAME"
12. 卸载包组
命令:yum groupremove "GROUP NAME"
注:若从其它处获得一个rpm包,此包依赖于其它包(在仓库中),如过只是单次使用,就没有必要为它建立元 数据。安装方法:yum install /.../.../file
五、自建yum仓库
1. 自建基于光盘镜像的yum仓库
(1). 挂载光盘到/media/cdrom目录
(2). 创建Centos-Base.repo文件,写入repo文件:
[base]
name=CentOS Media
baseurl=file:///media/cdrom
gpgcheck=0
enabled=1
2. 自建提供yum仓库的中心服务器
以http为例,步骤:
(1). 安装httpd程序,并启动服务
命令:yum install httpd
(2). 启动服务
命令:service httpd start
(3). 在httpd的文档根目录:/var/www/html中创建子目录,将软件包放入子目录中。
(4). 为仓库生成元数据文件,以使能够作为仓库使用
命令:createrepo /.../.../
例如:createrepo/var/www/html/zabix/
注:命令后跟的目录是包所在目录,createrepo若没有安装则需要安装
(5).配置yum客户端使用此仓库
1. 创建repo文件:touch /etc/yum.repos.d/zabix.repo
2. 写入repo文件,例如:
[base]
name=zabix repo
baseurl=http://192.168.161.160
gpgcheck=0
enabled=1
注;baseurl项地址为服务器主机地址