yum.repos.d中的变量($releasever与$basearch)

今天打算更新一下centos的repo源,把原先国外的repo地址换成国内的,速度快一些。主要替换的文件是/etc/yum.repos.d/Centos-Base.repo 。替换的时候,不知道大家有没有去注意里边的内容,还是简简单单换一下baseurl,可能是我比较闲,然后就研究了一下里边的几个变量分别是啥意思。先看一下替换前的文件长什么样。上图:

在这里出现了几个奇怪的变量,那么是什么意思,值是什么呢?上网查了一下,翻看了多个网页,开动了小脑筋,然后总结一下,过程比较艰辛和漫长,不在此细说,哥是个很低调的人哈哈哈哈哈。

公布结果:

  /etc/yum.repos.d/CentOS-Base.repo文件中的$releasever 值是先参考/etc/yum.conf中的distroverpkg的值,大家可以去看看,如果有这个值的话,那么就会用到这个值,比如我电脑上这个值是centos-release,这个值怎么用呢?其实是将$releasever的值设置为当前系统中已经安装的centos-release包的版本号。具体怎么看这个已安装的包的版本号呢?很简单,

          rpm -q centos-release   #查看系统已安装的包的名字

这个命令查看的是包的名字,在我的系统上是

centos-release-6-4.el6.centos.10.i686

那么版本号是多少呢?

centos-release-6-4.el6.centos.10.i686

答案是6,就是这么6,所以折腾了半天,$releasever 的值等于  6 !!!!

为啥要费这么大劲呢????!!!

为了升级 redhat-release 包之后可以自动升级整个系统上的软件。

这么看,似乎还是有那么一点点道理的,但是是不是搞得太复杂了呢,大家自行保留意见。

接着看baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

可以看到还有$basearch的值不是很明确,那么这个值从哪里来呢?

 i686 and i586 machines both have a base architecture of i386, and AMD64 and Intel64 machines have a base architecture of x86_64.

也就是说,32位系统是i386,64位系统是x86_64

那么上面的baseurl就可以拼凑完成了,我们访问一下看看,

http://mirror.centos.org/centos/6/os/x86_64/

事实证明了,可以访问。

刚才说到,如果/etc/yum.conf中如果有distroverpkg的值的话,是这样的一个流程,那么如果没有这个值的话,怎么办呢?

答案是参考/etc/redhat-release中的值,我的电脑是CentOS release 6.4 (Final)
所以应该是会抽取出来其中的6,然后作为$releasever的值。

原文地址:https://www.cnblogs.com/lukairui/p/8487700.html