一、yum简介
yum全名:Yellowdog Update Modifier,包管理器的前端工具
yum的开发组织:yellow dog
yum服务端:
yum服务器也被称为yum仓库(yum repo)或者yum源,储存了众多的rpm包以及包的相关的元素文件(放置于特定目录下:repodata)
createrepo文件服务器工具:服务器需要原数据文件描述存储了哪些程序包、程序包的依赖关系、程序包的版本等信息,createrepo是一款可以重rpm程序包提取程序组成清单制作服务器的原数据文件
yum客户端:yum命令
二、yum工作机制
1、yum是典型的C/S架构的应用,由客户端和服务端组成;
2、启动yum时,yum客户端会根据其配置文件到指定的远程文件存储服务器(可以是URL也可以是自己内网维护的文件服务区)下载服务器的存储列表文件,并存储于cache;
3、存储列表文件存储了服务器中有哪些程序包及程序包的依赖关系,yum回提取依赖关系,查询本地已尽安装的依赖包后,向服务器请求并下载自己没有的程序包;
4、下载完成后,yum会根据依赖关系文件,自动安装程序,直到安装完成所需的程序包;
5、安装完成后,自动删除缓存中的程序包,保留原数据,作为其它需要安装程序的依赖包源。
(以上过程中,yum查询自己没有的依赖包之前会和服务器对比已有依赖包的校验码,若版本较老,则会到远程服务器下载新版本的程序包、原数据文件、依赖关系文件;)
yum支持的文件存储服务器:http://、ftp://、nfs://、file:///(本地光盘)
三、yum配置
1、/etc/yum.conf # 主配置文件:为所有仓库提供公共配置
[root@localhost rpm]# cat /etc/yum.conf
[main] #主配置文件
cachedir=/var/cache/yum/$basearch/$releasever #chche缓存目录
keepcache=0 #安装完成后cache缓存是否保存
#0:不保存,1:保存
debuglevel=2 #调式级别
logfile=/var/log/yum.log #安装日志文件路径
exactarch=1 #安装时是否需要精确匹配平台
#1:精确匹配,若不一致则不安装
obsoletes=1
gpgcheck=1 #安装时是否检查程序包来源合法性及程序包完整性
plugins=1 #是否支持插件机制
installonly_limit=5 #一次同时安装几个程序包
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum #追踪bug时的URL
distroverpkg=centos-release #发行版的获取
2、/etc/yum.repos.d/*.repo # 子配置文件:为仓库的URL指向提供配置
[root@localhost yum.repos.d]# cat CentOS-Base.repo
[base] # base仓库
name=CentOS-$releasever - Base # 仓库名
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#使用了mirrorlist而没有使用baseurl
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ # baseurl,即yum源
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enable=0 # 不启用该仓库,默认为启用(1)
#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
3、查看配置文件帮助文档: man yum.conf
4、子配置文件格式整理说明:
[repositoryID] # 仓库ID
name=仓库名 # 任取,一般取为仓库功能的简要描述
baseurl=url1:// # 仓库的访问路径,支持ftp:// 、 http:// 、nfs:// 、file:///
url2://
...
mirrolist=http://.. # 使用mirrolist,"http://"指向一个url服务器
# url服务器存储了baseurl列表
# 使用mirrolist相当于baseurl为指定url服务器中存储的url
# mirrolist与baseurl不能同时使用
enabled=1 # 启用此仓库(0为禁用)
gpgcheck=1 # 查程序包的来源合法性和完整性(0为不检查)
repp_gpgcheck=1 # 检查程序包来源服务器提供的原数据的合法性和完整性
gpgkey=URL # 指明检查合法性和完整性的密钥获取URL
enablegroups=1 # 支持通过组来管理程序包(0为不支持)
failovermethod={roundrobin|priority} # roundrobin,随机使用URL
# priority,根据优先级使用URL
username= # 访问yum服务器的用户名
passwd= # 访问yum服务器的密码
cost= # 开销,默认为1000
5、yum配置文件中常用变量
常用于URL:http://mirrors.magedu.com/centos/$releasever/$basearch/os
$releasever:当前OS的发行版本号
$arch:当前运行平台
$basearch:当前运行的基础平台
$YUM0-$YUM9
6、自定义yum源:
在 /etc/yum.repos.d/下自己创建yum源配置文件并指向本地yum源储存服务器
[root@localhost yum.repos.d]# vim /etc/yum.repos.d/centos-yumserverlocal.repo
[base]
name=yumserverlocal on 192.168.0.19
baseurl=http://192.168.0.19/cobbler/ks_mirror/CentOS-6.6-x86_64/
gpgcheck=0
enable=1
四、yum命令
1、yum help # 查看命令帮助
2、yum仓库管理命令:
yum repolist 选项 # 显示启用的yum仓库
选项:
all # 显示所有的yum仓库
enable # 显示启用的yum仓库
disabled # 显示禁用的yum仓库
3、yum程序包管理命令:
yum list 选项 # 显示yum源的所有程序包
选项:
all # 显示全部程序包
available # 显示可用但未安装的程序包
installed # 显示已安装的程序包
updates # 显示可用的升级包
extras # 显示可用的扩展包
obsoletes # 显示废弃的程序包
通配符 # 显示通配符匹配的程序包
yum check-update # 检查有哪些升级包可以使用
yum search 关键字 # 根据关键字搜索程序包及摘要信息
yum info 指定程序包 # 查看指定程序包的简要信息
yum provides 指定功能特性 # 查看指定功能特性(或文件)由那个程序包提供
示例:
[root@localhost ~]# yum provides python
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.cn99.com
* updates: mirrors.aliyun.com
python-2.7.5-86.el7.x86_64 : An interpreted, interactive, object-oriented programming language
Repo : base
python-2.7.5-68.el7.x86_64 : An interpreted, interactive, object-oriented programming language
Repo : @anaconda
yum deplist 指定程序包 # 显示指定程序包的依赖关系
yum install -y 程序包1 程序包2 ... # 安装程序包
# -y为默认yes,不进入交互安装页面
yum install --downloadonly # 仅下载不安装
yum reinstall -y 程序包1 程序包2 ... # 重新安装程序包
yum update 程序包1 程序包2 # 升级指定程序包
yum downgrade 程序包1 程序包2 # 降级指定程序包
yum remove 程序包1 程序包2 # 卸载指定程序包
# 补充:该程序包的依赖包也会被卸载
yum localinstall 程序包 # 使用本地程序包进行yum安装
# 若没有相关依赖包,指定下载安装依赖包
yum localupdate 程序包 # 使用本地程序包升级
注意:yum安装升级时候常用选项:
--nogpgcheck # 禁止检查gpg
-y # 自动回答y,不进入交互安装页面
-q # 静默模式进行安装
--disablerepo=指定仓库 # 本次安装禁用该仓库
--enablerepo=指定仓库 # 使用指定仓库安装
--noplugins #本次安装禁用所有插件
--installroot=/指定路劲 # 指定程序包安装路径
4、yum包组:
yum grouplist # 查看所有包组
yum groupinstall 包组名 # 安装包组内的程序包
yum groupupdate 包组名 # 升级包组内的程序包
yum groupremove 包组名 # 拆卸包组内的程序包
yum groupinfo 包组名 # 查看包组信息
5、yum客户端管理命令:
yum clean 选项 # yum缓存清理
选项:
all # 清理所有缓存
packages # 只清理程序包
metadate # 只清理原数据
expire-cache # 只清理过期缓存
rpmdb # 只清理rpmdb
plugins # 只清理插件
yum makecache # 生成yum缓存
yum history # 查看yum操作历史
6、yum扩展源,有些程序包无法安装时需要安装扩展源
yum -y install epel-release
五、使用光盘做yum源
1、mount -r /dev/cdrom /media/cdrom #挂载光盘
2、查看光盘中的文件,其中erpodata即是yum仓库的指向文件
[root@localhost Packages]# cd /media/cdrom/
[root@localhost cdrom]# ls
CentOS_BuildTag EFI EULA GPL images isolinux LiveOS Packages repodata RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL
3、到yum的次配置文件(yum仓库)下创建本地yum仓库
[root@localhost cdrom]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo
[root@localhost yum.repos.d]# vim localCD.repo
[base]
name=CentOS 7 Release 7.1.1503
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
~
4、查看可以使用的yum仓库是否有自己创建的仓库
[root@localhost yum.repos.d]# yum repolist
六、yum服务器部署(createrepo)
1、安装createrepo程序包
[root@localhost ~]# yum install -y createrepo
2、上传程序包到服务器指定路径
[root@localhost ~]# mkdir -p /yum/repo
[root@localhost Packages]# cp /media/cdrom/Packages/*.rpm /yum/repo/ #将挂载好的光盘中的rpm包复制到本地yum源路径
3、createrepo读取yum源储存的rpm包,指定该路径为yum的仓库,并生成repodata目录
[root@localhost Packages]# cd /yum/repo/
[root@localhost repo]# createrepo ./
Spawning worker 0 with 931 pkgs
Spawning worker 1 with 931 pkgs
Spawning worker 2 with 931 pkgs
Spawning worker 3 with 930 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
4、查看是否生成repodata目录
[root@localhost repo]# cd repodata/
[root@localhost repodata]# ls
40bac61f2a462557e757c2183511f57d07fba2c0dd63f99b48f0b466b7f2b8d2-other.xml.gz
74cff0b4b9ebc7b9d5dd73429d883d4956a583f57ceaa82af94ec1706d960c53-primary.xml.gz
9710c85f1049b4c60c74ae5fd51d3e98e4ecd50a43ab53ff641690fb164a6d63-other.sqlite.bz2
bbf080777e242f7aa46639dac48a2046bbccabb90822984692c92571f664cb32-primary.sqlite.bz2
cfa741341d5d270d5b42d6220e2908d053c39a2d8346986bf48cee360e6f7ce8-filelists.xml.gz
d863fcc08a4e8d47382001c3f22693ed77e03815a76cedf34d8256d4c12f6f0d-filelists.sqlite.bz2
repomd.xml #首先下载repomd.xml,与yum客户端中的本地安装程序包比较,安装版本较老时,从yum服务端下载重新安装
5、在yum客户端服务器配置yum源为刚部署好的yum源
[root@localhost repodata]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim yumlocal.repo
[yumlocal]
name=yumserverlocal CentOS 7
baseurl=file:///yum/repo/
gpgcheck=0
[root@localhost yum.repos.d]# yum repolist #获取新的并查看可用的yum源
已加载插件:fastestmirror
Repository base is listed more than once in the configuration
yumlocal | 2.9 kB 00:00:00
yumlocal/primary_db | 2.8 MB 00:00:00
Loading mirror speeds from cached hostfile
* base: mirrors.cn99.com
* extras: mirrors.sohu.com
* updates: mirrors.sohu.com
源标识 源名称 状态
base/7/x86_64 CentOS-7 - Base 9,591
extras/7/x86_64 CentOS-7 - Extras 329
updates/7/x86_64 CentOS-7 - Updates 1,698
yumlocal yumserverlocal CentOS 7 3,723
repolist: 15,341
6、目前yum源即可本地使用,配置http服务或者web服务后,将相关路径输出即可将变为yum源的储存服务器,供远程使用