Linux前端包管理工具yum的简单使用
文本目录:
- yum工具的工作流程简单介绍
- yum客户端配置文件
- yum工具使用
- 案例-本地光盘设置为可用的yum仓库
1. yum工作流程简单介绍
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
与yum相关的资源主要有以下几个:
1、yum repository: yum repo –> 软件仓库
存储了众多的rpm包,以及与包相关的元数据文件,元数据文件放置于特定的目录下(repodata),其并不是本来就存在,在自己创建yum软件仓库时,可使用createrepo工具创建生成各rpm包的元数据文件。2、yum客户端配置文件
其配置文件主要有两类,/etc/yum.conf 配置文件为所有仓库提供公共的配置,/etc/yum.repos.d/*.repo配置文件为各软件仓库提供配置,进行分而治之,方便管理。
3、文件共享服务器
yum软件仓库的rpm包可通过共享文件服务器进行文件上传下载,其支持以下四类文件服务:
ftp服务: ftp://
http服务: http://
nfs服务: nfs://
本地服务: file:///
附一张简单粗暴的简图,帮助理解。
工作流程
在通过yum工具下载rpm包时,内核会读取yum的配置文件,通过指定的URL连接到远程yum仓库(如果仓库中有诸多的rpm包,遍历寻找会消耗诸多时间),将 yum仓库中的rpm包元数据文件通过文件共享服务器下载至本地缓存中,系统会解析各安装包的关系,本地存在的会在本地加载,不存在的则通过元数据文件链接到远程仓库进行下载。
# Problem: 如果远程仓库进行更新或升级,应当如何处理?
远程仓库进行更新或升级,本地缓存无法得知,因而yum工具在下载元数据的同时,会把文件的校验码数据也下载到缓存中,当远程仓库进行更新时,yum管理工具会下载更新后的检验码数据文件与缓存中的做对比,如果发生改变,则清空缓存中的原数据文件,进行重新下载。
2. yum客户端配置文件
2.1 yum配置文件
yum客户端配置文件主要有两大类,使用 rpm -qc yum 可以查询yum管理工具的所有配置文件:
[root@www yum.repos.d]# rpm -qc yum
/etc/logrotate.d/yum
/etc/yum.conf
/etc/yum/version-groups.conf
yum常用的配置文件如下
- /etc/yum.conf 为所有的仓库提供公共的配置文件,一般里面的内容不需要修改。
- /etc/yum.repos.d/*.repo 为各仓库的指向提供配置,比如仓库的id号,仓库名称,是否启用等信息。
[root@www ~]# ls /etc | grep -E yum (查询yum的配置文件)
yum
yum.conf
yum.repos.d
[root@www ~]# ls /etc/yum.repos.d/(列出各软件仓库的配置文件)
CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo
2.2 仓库指向的定义
如何定义一个软件仓库,需要指定哪些参数,各参数有哪些含义,可以使用命令 man yum.config 来查看各变量的含义及解释;
[root@www ~]# man yum.conf
先放张图来显示yum.conf里的内容,可使用vi进行查看。
下面就常用的一些参数进行简短说明,日常配置中大多数可以碰到。
yum 软件仓库配置参数:
参数 | 解释 |
---|---|
[repositoryid] | 软件仓库的id,最好不要和其他仓库重名 |
name= | 指明软件仓库的名称 |
baseurl= | 指明软件仓库的路由信息 |
mirrorlist | url镜像列表,与baseurl选其一 |
enable=[0 | 1] | 是否启用该软件仓库 |
gpgcheck=[0 | 1] | 是否校验数据完整性和来源合法性 |
repo_gpgcheck=[0 | 1] | 是否使用密钥验证元数据的合法性 |
gpgkey=URL | 指明密钥的路由 |
failovermethod=[ roundrobin | priority ] | 故障转移方法,默认为roundrobin,随机挑选, priority 按优先级查找 |
cost= | 指明开销,默认为1000 |
示例:自行配置一个yum软件仓库
Note: URL必须指向元数据文件所在的目录(repodata存在的目录)
[root@www ~]# cd /etc/yum.repos.d
[root@www 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@www yum.repos.d]# vi CentOS-cloud.repo
# 编辑CentOS-cloud.repo文件
[cloud]
name=cnetos7 cloud x86_64 openstack-ocata
baseurl=https://mirrors.aliyun.com/centos/7/cloud/x86_64/openstack-ocata/
gbgcheck=0
enable=1
#显示本地可用的yum仓库
[root@www yum.repos.d]# yum repolist
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base | 3.6 kB 00:00:00
cloud | 2.9 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
cloud/primary_db | 848 kB 00:00:00
repo id repo name status
base/7/x86_64 CentOS-7 - Base 9,911
cloud cnetos7 cloud x86_64 openstack-ocata 1,967
extras/7/x86_64 CentOS-7 - Extras 370
updates/7/x86_64 CentOS-7 - Updates 1,054
repolist: 13,302
效果展示:
3. yum工具使用
命令行格式:yum [options] [command] [package …]
3.1 仓库相关命令
Command | 解释 |
---|---|
repolist [all | enabled | disabled] | 显示仓库列表(all-所有, enabled-启用, disabled-禁用) |
repoinfo [all | enabled | disabled] | 显示仓库信息(all-所有, enabled-启用, disabled-禁用) |
3.2 程序包相关命令
Command | 解释 |
---|---|
list [all | available | updates | installed | ] [glob_exp1] | 显示程序包(available:未安装但可用) |
info […] | 查看程序包的infomation |
install package1 [package2] […] | 安装程序包 |
reinstall package1 [package2] […] | 重新安装程序包 |
update [package1] [package2] […] | 升级程序包 |
remove | erase package1 [package2] […] | 卸载程序包 |
provides | whatprovides feature1 [feature2] […] | 查看功能由哪些程序包提供 |
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] | 清理本地缓存 |
search string1 [string2] […] | 以指定的关键字搜索程序包和summary信息,模糊匹配 |
deplist package1 [package2] […] | 查看指定的程序包的依赖包 |
history [info|list|packages-list|packages-info|summary|stats] | 查看yum事务历史(yum实行修改操作,会触发一次事务,事务有阻塞和隔离,串行执行) |
install | 可用于安装本地的rpm包 |
3.3 程序包组相关命令
Command | 解释 |
---|---|
grouplist | 查看包组 |
groupinstall group1 group2 … | 安装包组 |
groupremove group1 group2 … | 删除包组 |
groupinfo group1 … | 查看包组详细信息 |
4. 本地光盘设置为可用的yum仓库
[root@www media]# mount | grep "cdrom" #查询光盘设备是否挂载
[root@www media]# mount -r /dev/cdrom /media/cdrom #挂载光盘设备
[root@www media]# mount | grep "cdrom"
/dev/sr0 on /media/cdrom type iso9660 (ro,relatime,uid=1000,gid=1000,iocharset=utf8,mode=0400,dmode=0500)
[root@www media]# cd /media/cdrom
[root@www 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
[root@www cdrom]# cd /etc/yum.repos.d/
[root@www yum.repos.d]# ls
CentOS-Base.repo CentOS-cloud.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo
[root@www yum.repos.d]# vi CentOS-local.repo #新建仓库指向
[root@www yum.repos.d]# yum repo list #显示可以的仓库
Loaded plugins: fastestmirror, langpacks
No such command: repo. Please use /usr/bin/yum --help
[root@www yum.repos.d]# yum repolist
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
local | 3.6 kB 00:00:00
(1/2): local/group_gz | 166 kB 00:00:00
(2/2): local/primary_db | 3.1 MB 00:00:00
repo id repo name status
base/7/x86_64 CentOS-7 - Base 9,911
cloud cnetos7 cloud x86_64 openstack-ocata 1,967
extras/7/x86_64 CentOS-7 - Extras 370
local centos7 local cdrom 3,971
updates/7/x86_64 CentOS-7 - Updates 1,054
repolist: 17,273
[root@www yum.repos.d]#
[root@www yum.repos.d]# vi CentOS-local.repo