当前位置: 代码迷 >> 综合 >> CentOS yum执行原理以及yum.conf配置文件 和 .repo文件详解
  详细解决方案

CentOS yum执行原理以及yum.conf配置文件 和 .repo文件详解

热度:124   发布时间:2023-09-06 21:41:13.0

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

yum相关的配置文件主要有两个:
1.etc/yum.conf配置文件
2.etc/yum.repos.d/目录下的众多.repo文件

一、简介
什么是yum.conf文件
yum.conf文件是用来存储yum配置信息的文件,虽然yum.conf文件通常都比较简洁,却是yum软件管理器的重要组成部分。

什么是repo文件?
repo文件是yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用。

yum功能简介
yum是一款shell前端软件包管理工具,用其安装软件时,该工具以rpm包的包头(header)写入的依赖信息为依据,列出需要安装以满足欲装软件正常运行的所有依赖包,并在用户确认后进行自动化安装。

yum工作原理
执行yum命令时,会首先从”/etc/yum.repo.d”目录下的众多repo文件中取得软件仓库的地址并下载“元数据”,“元数据”包含注册于该软件仓库内所有软件包的包名及其所需的依赖环境等信息,yum得到这些信息后会和本地以后环境做对比,进而列出确认需要安装哪些包,并在用户确认后开始安装。
“元数据”由位于yum源服务器相关路径的repodata目录下的repomd.xml做索引。

yum工作流程
yum的基本工作流程如下:
服务器端:在服务器上面存放了所有的rpm软件包,然后以相关的功能去分析每个rpm文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内。
客户端:如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过WWW或FTP方式),通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。

二、yum.conf文件
yum.conf文件位于/etc目录下

[main]

#cachedir:yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/yum/ b a s e a r c h / basearch/ releasever。
cachedir=/var/cache/yum/ b a s e a r c h / basearch/ releasever

#keepcache:是否保留缓存内容,0:表示安装后删除软件包,1表示安装后保留软件包
keepcache=1

#debuglevel:除错级别,0──10,默认是2 貌似只记录安装和删除记录
debuglevel=2

#logfile:存放系统更新软件的日志的目录。用户可以到/var/log/yum.log文件去查询自己在过去的日子里都做了哪些更新。
logfile=/var/log/yum.log

#pkgpolicy: 包的策略。一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存 在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个 服务器上的软件安装。一般都是选newest。
pkgpolicy=newest

#指定一个软件包,yum会根据这个包判断你的发行版本,默认是RedHat-release,也可以是安装的任何针对自己发行版的rpm包。
distroverpkg=CentOS-release

#tolerent,也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum不会出现错误信息。默认是0。
tolerant=1

#exactarch,有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用1686的包来升级。
exactarch=1

#retries,网络连接发生错误后的重试次数,如果设为0,则会无限重试。
retries=20

#此选项在进行发行版跨版本升级的时候会用到。
obsoletes=1

#gpgchkeck= 有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认是检查的。
gpgcheck=1

#默认都会被include 进来 也就是说 /etc/yum.repos.d/xx.repo 无论配置文件有多少个 每个里面有多少个[name] 最后其实都被整合到 一个里面看就是了 重复的[name]后面的覆盖前面的
reposdir=/etc/yy.rm #默认是 /etc/yum.repos.d/ 低下的 xx.repo后缀文件

#exclude 排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。
exclude=xxx

#该选项用户指定 .repo 文件的绝对路径。.repo 文件包含软件仓库的信息 (作用与 /etc/yum.conf 文件中的 [repository] 片段相同)。
reposdir=[包含 .repo 文件的目录的绝对路径]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
三、.repo文件
/etc/yum.repo.d/目录下有很多 .repo文件

#serverid是用于区别各个不同的repository,必须有一个独一无二的名称。若重复了,是前面覆盖后面–还是反过来呢???用enabled 测试是后面覆盖前面
[serverid]

#name,是对repository的描述,支持像$releasever $basearch这样的变量; name=Fedora Core $releasever - $basearch - Released Updates
name=Some name for this server

#baseurl是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。它的格式是:
#baseurl=url://server1/path/to/repository/
#url://server2/path/to/repository/
#url://server3/path/to/repository/
#其中url支持的协议有 http:// ftp:// file://三种。baseurl后可以跟多个url,你可以自己改为速度比较快的镜像站,但#baseurl只能有一个,也就是说不能像如下格式:
#baseurl=url://server1/path/to/repository/
#baseurl=url://server2/path/to/repository/
#baseurl=url://server3/path/to/repository/
#其中url指向的目录必须是这个repository header目录的上一级,它也支持$releasever $basearch这样的变量。
baseurl=url://path/to/repository/

#指定一个镜像服务器的地址列表,通常是开启的,本例中加了注释符号禁用了,我们可以试试,将 r e l e a s e v e r releasever和 basearch替换
#成自己对应的版本和架构,例如10和i386,在浏览器中打开,我们就能看到一长串镜可用的镜像服务器地址列表。
#解释下几个变量
#KaTeX parse error: Expected 'EOF', got '#' at position 74: …-release包进行判断。 #?arch cpu体系,如i686,athlon等
#$basearch cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha。

#url之后可以加上多个选项,如gpgcheck、exclude、failovermethod等,比如:
#gpgcheck=1
#exclude=gaim
#其中gpgcheck,exclude的含义和[main]部分相同,但只对此服务器起作用
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-KaTeX parse error: Expected 'EOF', got '&' at position 11: releasever&?arch=basearch

#failovermethode 有两个选项roundrobin和priority,意思分别是有多个url可供选择时,yum选择的次序,roundrobin是随机选择,如果连接失 败则使用下一个,依次循环,priority则根据url的次序从第一个开始。如果不指明,默认是roundrobin。
failovermethod=priority

#当某个软件仓库被配置成 enabled=0 时,yum 在安装或升级软件包时不会将该仓库做为软件包提供源。使用这个选项,可以启用或禁用软件仓库。
#通过 yum 的 --enablerepo=[repo_name] 和 --disablerepo=[repo_name] 选项,或者通过 PackageKit 的"添加/删除软件"工具,也能够方便地启用和禁用指定的软件仓库
enabled=[1 or 0]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
参考:
CentOS yum的配置文件 repo文件详解
————————————————
版权声明:本文为CSDN博主「yzpyzp」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yzpbright/article/details/81387623

  相关解决方案