今天打算更新一下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的值。