CentOS系统的程序包管理:yum
yum 介绍
YUM(Yellowdog Update Modifier)是 rpm 的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具
yum 工作原理
YUM 是基于 CS 架构的,服务器作为YUM源,其中会有一个 repodate 的目录,里面包含了 YUM 源里所有 RPM 包的元数据、版本、依赖关系等内容(也可以使用 creatrepo 命令生成此文件,但是要注意先后顺序:现有 rpm 包,再生成 repodate 目录,如果 rpm 包有所更新,repodate 目录也要做做相应的更新)。在客户端首次向 YUM 源服务器访问时,会下载此文件,存储在客户端的缓存里,下次可以加快访问。
但是为了保证此文件的实时性和准确性,repodate 目录中还会生成一个 repomd.xml 文件,如果 YUM 源有任何更新,此文件也会相应更新。所以,客户端再次访问 YUM 源服务器时,首先进行此文件匹配,如果文件不一致,则会重新下载 repodate 目录;如果文件一致时,则不会更新。
注意: repodate 目录就是在仓库指向配置中,YUM 仓库源指向的 url 路径。
[root@LeeMumu repodata]# ls
080687b3c5697ad4d989b884e28308f0ef3d95f6de47f198227b71137b198b0a-other.sqlite.bz2
24469c26099924b2d0d981fbe353ff880844ca73793a49860a2675d6d53d4a27-primary.xml.gz
a507512e8150d2a570a414000780ddcfe2dfa9e0010d3e07172d34e0157fa55b-filelists.xml.gz
ad33ec2117aef227db84d240b2f2eebf07b3467ec013ef7d81f2814f1ea4ceda-primary.sqlite.bz2
af7695324ff369fb66e1c0a6998b28ed6417fc214bb2e1c4ffffd37b64caa2ae-other.xml.gz
b09e48e6f2b2c87c36253fff8f94fcf444f59de37e731a15a5ec2c1c63d1e94f-filelists.sqlite.bz2
repomd.xml
rpm 包管理工具
yum 和 dnf 都是 rpm 包的管理工具,解决了 rpm 包依赖等方面的问题。但是再使用 yum 安装程序时,如果突然关机,再次启动时,此前的安装工作是无法继续的,因为 yum 无法得知具体的安装进度。 dnf 工具主要是解决 yum 此方面的问题,其它功能同 yum 一致。
# CentOS: yum, dnf
# yum repository: yum repo
# 存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下)
# 文件服务器:
http://
https://
ftp://
file:///
yum 客户端
yum客户端配置文件路径:
# /etc/yum.conf # 为所有仓库提供公共配置
# /etc/yum.repos.d/*.repo # 为仓库的指向提供配置
注意:yum 的主文件 yum.conf 里包含了 yum.repos.d/*.repo
使用 yum 时,只会处理以 .repo 结尾的文件
多 repo 文件便于管理,CentOS 惯于此种方法进行配置文件设置
一个 repo 也可以指定多个仓库
/etc/yum.conf
/etc/yum.conf 定义了yum的工作特性。使用 man yum.conf 可以查看具体含义。
# cat /etc/yum.conf
[main] # 主配置文件
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=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
distroverpkg=centos-release
# This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
# It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m
# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d # yum 仓库 ID
查看 yum.conf 的文件帮助手册:
[root@LeeMumu repodata]# whatis yum.conf
yum.conf (5) - Configuration file for yum(8).
[root@LeeMumu repodata]# man 5 yum.conf
“仓库指向” 定义及详细说明
“仓库指向” 是名词。
[repositoryID] # 各个仓库的 ID 不能一样
name=Some name for this repository # name 尽量见名知义
baseurl=url://path/to/repository/ # =号左右不能留有空格,可以有多个URL
url://server2/path/to/repository/
url://server3/path/to/repository/
enabled={1|0} # 是否启用此仓库,默认启用(没有此条命令,代表启用)
gpgcheck={1|0} # 安装前是否检验文件的来源合法性和完整性
gpgkey=URL # gpg的密钥文件访问路径
enablegroups={1|0} # 是否允许在此仓库使用组来批量管理程序包,默认是允许
failovermethod={roundrobin|priority} # 默认为:roundrobin,意为随机挑选;priority 是自上而下选择
cost= # 开销数值,默认为1000,开销值越大,优先级越高
[root@LeeMumu ~]# cd /etc/yum.repos.d/
[root@LeeMumu yum.repos.d]# ls
CentOS-Base.repo # 定义了各个 yum 源仓库(里面的分类可结合 aliyun 上的 CentOS 镜像分类来进行理解)
CentOS-Debuginfo.repo # 其它几个 .repo 文件也都是定义了 yum 源仓库,但是都是 enable=0(未启用状态)
CentOS-Media.repo
CentOS-Vault.repo
CentOS-CR.repo
CentOS-fasttrack.repo
CentOS-Sources.repo
# 在自定义 yum 源时,可以新创建 一个 .repo 文件,进行源仓库配置即可。
# 但是要注意,仓库名称不能重名,否则会报错
# repodate 目录就是在仓库指向配置中,YUM 仓库源指向的 url 路径
# 如果是同类 rpm 文件,可以定义在一个仓库里,使用多个 url 即可,在使用时会轮询进行访问
# 如果是不同类别的 rpm 文件,需要定义多个仓库,要注意仓库名定义
# rpm 文件类别,可以去 https://opsx.alibaba.com/mirror 等镜像站点上去查看
# repo 创建完后后,可以使用 # yum repolist 来进行查看
注意: repodate 目录就是在仓库指向配置中,YUM 仓库源指向的 url 路径。
如下:当定义阿里云上的镜像站点未 YUM 仓库的话,url 可写为如下:
https://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/
查看本机yum源
# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.cn99.com
* extras: mirror.bit.edu.cn
* updates: mirror.bit.edu.cn
repo id repo name status
base/7/x86_64 CentOS-7 - Base 10,019
extras/7/x86_64 CentOS-7 - Extras 419
updates/7/x86_64 CentOS-7 - Updates 2,124
repolist: 12,562
yum 命令的用法
语法格式:
# yum [options] [command] [package ...]
command 命令选项
command is one of:
* install package1 [package2] [...]
* update [package1] [package2] [...]
* update-to [package1] [package2] [...]
* check-update
* upgrade [package1] [package2] [...]
* upgrade-to [package1] [package2] [...]
* distribution-synchronization [package1] [package2] [...]
* remove | erase package1 [package2] [...]
* list [...]
* info [...]
* provides | whatprovides feature1 [feature2] [...]
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
* makecache
* groupinstall group1 [group2] [...]