加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

yum2

发布时间:2020-12-15 23:24:34 所属栏目:安全 来源:网络整理
导读:首先yum源的主配置文件为/etc/yum.conf文件。这个文件一般不用动,而我们配置具体的各个yum源的配置文件在/etc/yum.repo.d目录下,所有以repo结尾的文件都是yum源配置文件。 [[email?protected] ha]# cd /etc/ yum .repos.d/ [[email?protected] yum .repos.

首先yum源的主配置文件为/etc/yum.conf文件。这个文件一般不用动,而我们配置具体的各个yum源的配置文件在/etc/yum.repo.d目录下,所有以repo结尾的文件都是yum源配置文件。

[[email?protected] ha]# cd /etc/yum.repos.d/
[[email?protected] yum.repos.d]# ls
CentOS-Base.repo        CentOS-fasttrack.repos  CentOS-Vault.repos
CentOS-Debuginfo.repos  CentOS-Media.repos      wo.repo

?

需要注意的是,配置的yum源的个数并不是以.repo的文件数量为计数,而是以在所有.repo文件里定义的所有yum源为计数,比如我在Centos-Base.repo中定义了3个yum源,在wo.repo中定义了两个,则我总共定义了5个yum源。这5个yum源的地位是相等的,不论他的名字是base,还是updates,还是extras,还是别的什么,注意,地位是相等的。比如我们要安装a软件,base这个yum源里的a软件的版本是1.0.0-1,而updates源的版本是1.0.0-2,5个yum源中,由我们定义的myyum源里的a软件的版本最高,为1.0.1,则我们执行yum -y install a的时候,安装的就是myyum源中的这个1.0.1版本的a,也就是说,yum在安装软件时,总是去找所有yum源里版本最高的那个去安装。

其次是定义yum源的规范:

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

以上是base源的定义,第一行写源名称,用[]括起来,然后就可以配置了,name这个可以随便写,gpgcheck=1表示安装时进行gpg校验,enabled=1表示启用该yum源,=0则为不启用,默认如果不写这个参数,则表示启用。下面到了mirrorlist和baseurl这两个参数了,二者只能用一个,用了一个就要把另一个注释掉

mirrorlist保存的是yum源的镜像地址列表,是一个list,$releasever是你的centos系统的大的版本号,比如我的centos是6.8,则$releasever为6,而不是6.8.$basearch为系统是多少位的,比如我的是x86_64,$infra这个未知不用理会,所以,上面配置的地址为http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os

我们访问一下这个地址:

看到了没,是众多镜像地址的列表。

?

而baseurl则为具体的镜像地址,注意这个地址也可以定义多个。所以上面这个base源可以把mirrorlist注释掉,而用baseurl参数

[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://mirrors.neusoft.edu.cn/centos/6.10/os/x86_64/
        http://mirrors.nwsuaf.edu.cn/centos/6.10/os/x86_64/
        http://mirrors.nju.edu.cn/centos/6.10/os/x86_64/
        http://mirrors.shu.edu.cn/centos/6.10/os/x86_64/
        http://mirrors.njupt.edu.cn/centos/6.10/os/x86_64/
        http://mirrors.cqu.edu.cn/CentOS/6.10/os/x86_64/
        http://mirrors.163.com/centos/6.10/os/x86_64/
        http://mirrors.zju.edu.cn/centos/6.10/os/x86_64/
        http://mirror.lzu.edu.cn/centos/6.10/os/x86_64/
        http://ftp.sjtu.edu.cn/centos/6.10/os/x86_64/

gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

(多说一句,源地址一定是yum源repodata这个目录的所在目录,关于repodata目录的作用,请翻看其他文章)

那么yum在下载的时候,会选择哪个作为下载源呢?

首先,在同一个yum源中定义的地址,yum认为他们都是完全相同的,比如a软件,如果http://mirrors.neusoft.edu.cn/centos/6.10/os/x86_64/有,则http://mirrors.nwsuaf.edu.cn/centos/6.10/os/x86_64/也有,如果在http://mirrors.neusoft.edu.cn/centos/6.10/os/x86_64/中a的版本号是1.1,则在http://mirrors.nwsuaf.edu.cn/centos/6.10/os/x86_64/的版本也是1.1,反之,如果a在http://mirrors.neusoft.edu.cn/centos/6.10/os/x86_64/没有,则在

http://mirrors.nwsuaf.edu.cn/centos/6.10/os/x86_64/也没有。yum会定期对同一yum源中定义的众多地址进行测速,比如我们第一次用yum安装软件,yum第一个做的工作就是先对各个yum源中所有的地址进行测速,然后把结果保存在/var/cache/yum/x86_64/6目录下的timedhosts.txt文件中

[base]
baseurl=http://1.com/centos/6/os/x86_64
        http://2.com/centos/6/os/x86_64
        http://3.com/centos/6/os/x86_64

[updates]
baseurl=http://4.com/centos/6/updates/x86_64
        http://5.com/centos/6/updates/x86_64
        http://6.com/centos/6/updates/x86_64
[myyum]
baseurl=http://7.com/centos/6/myyum/x86_64
        http://8.com/centos/6/myyum/x86_64
        http://9.com/centos/6/myyum/x86_64
[[email?protected] 6]# cat timedhosts.txt 

1.com 0.515101156543
2.com 0.235213220074
3.com 0.328243950073
4.com 0.157401976252
5.com 0.673211421011
6.com 0.312501632173
7.com 0.123424232373
8.com 0.157476575652
9.com 0.324236577511

?

比如测出来的结果像上面的这个,则从此以后,2.com就作为了base源的实际下载源,4.com就作为了updates源的实际下载源,7.com就作为了myyum源的实际下载源

假如我们要安装的是ss软件,则yum会在2.com,4.com,7.com中选择安装哪个。如果2.com这个下载源没有该软件,yum并不会再去1.com或者3.com中去寻找该软件,因为yum认为在同一yum源中定义的源都是完全相同的。假如实际的情况是,2.com中没有,4.com中有1.1版本,7.com中有1.2版本,则yum会最终以7.com为下载源。

?

所以,按照规范,我们在同一yum源中定义的各种源地址,彼此因为是完全相同的,假如我们不按照规范去定义,比如举个例子,上面这个例子中,我们定义的2.com和3.com是不同的,假如我们下载一个dd软件,2中没有,4中也没有,7中也没有,唯独3。com中有,则该软件依然无法安装,因为测速过程中2.com最快,那么yum认为2.com就代表了base这个yum源的实际情况。

?

注意这个测速表有时效性,比如他的生存周期是5天,则5天内我们用yum的时候,都会以此表作为根据,5天之后,我们再次用yum安装软件的时候,会重新测速,重新得到一个新表

事实上,/var/cache/yum这个目录并不是一个普通的目录,这正是yum的缓存所在的目录,缓存会存储很多信息,其中就包括各个源地址的速度

[[email?protected] 6]# pwd
/var/cache/yum/x86_64/6
[[email?protected] 6]# ls
base? myyum timedhosts.txt updates

缓存文件还会缓存一些别的东西

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读