前边几篇有关yum的文章一直在提到一个概念“yum源”,那么什么叫做yum源呢?就是我们使用yum install或者yum update或者yum info或者yum list的时候,yum怎么知道去哪个地方去获取要安装的rpm包,肯定是linux里面已经指定好了的,这个指定的地方就是就是个网址,它指定了yum去哪里找寻rpm包来进行安装、更新、或者获取查询的rpm包的信息。也就是说yum源就是yum命令获取rpm包的地方。也被称作yum仓库,就像java里面的maven也要有个仓库一样。
yum的配置文件有两种,一个是主配置文件(/etc/yum.conf),一个是各个仓库的配置文件,在/etc/yum.repos.d/目录下。主配置文件里面的配置针对各个仓库的配置文件(/etc/yum.repos.d/)都生效,各个仓库的配置文件里面的配置可以覆盖主配置文件,也就是说优先级比主配置文件yum.conf高。
一、我们先来聊聊主配置文件yum.conf,"cat/etc/yum.conf"得到内容如下:
[main] cachedir=/var/cache/yum/$basearch/$releasever #yum 缓存的目录,yum 在此存储下载的rpm 包和数据库 keepcache=0 #安装完成后是否保留软件包,0:不保留,1:保留 debuglevel=2 #调试信息输出等级,范围为0-10,缺省为2 logfile=/var/log/yum.log #yum 日志文件位置。 exactarch=1 #1:yum只会安装和系统架构(i386,i686等叫做系统架构)匹配的软件包 0:和系统架构不匹配的包也可能被安装。 obsoletes=1 # gpgcheck=1 plugins=1 #是否启用插件,1:允许,0:不允许。我们一般用yum-fastestmirror这个插件。 installonly_limit=5 bugtracker_url= &ref=http://bugs.centos.org/bug_report_page.php?category=yum distroverpkg=centos-release
这里我只是解释了一下这个文件里面我知道的选项的含义 ,我们并不需要对这个文件做更改。
二、各个仓库的配置文件(/etc/yum.repos.d/)
我们来看看前边文章里面提到的两个问题:
1.第一张图片的红框里面为什么会重现aliyun(阿里云),163(网易)的网址?我的centos是6.5的,难道安装好centos之后就会默认从这里下载rpm包?
2.第二张图片里面的Repository以及该列下边的updates、base是什么意思?对,updates、base都是仓库名,这里就牵涉到了yum源的知识。
先来看看仓库Repository列下面的updates、base在哪里配置,切换到仓库配置文件所在目录下:
[root@localhost yum.repos.d]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# ls CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
我们要说的只有“CentOS-Base.repo”和“CentOS-Media.repo”两个文件,其他两个不常用。
查看“CentOS-Base.repo”文件内容,摘录如下:
[base] #yum安装时使用的仓库名,就是上边图片中Repository列中显示的名字
name=CentOS-$releasever - Base #描述性文字
#可用的地址列表
mirrorlist=
#yum源的地址可以通过一个地址列表mirrorlist指定,也可以单独指定一个地址作为yum源
#baseurl=
#1:对下载的rpm包进行检查,0:不进行安全性检查
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#类似base
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
哦,明白了,原来Repository列下边的updates、base都是yum仓库的名字啊,每个仓库的地址是通过mirrorlist指定个地址集合或者baseurl指定一个地址来设置的。那上边的第二个问题就解决了,那么第一个问题呢,也就是为什么会出现aliyun(阿里云),163(网易)的网址呢?
这里我们看base仓库的mirrorlist网址"http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os "里面的$releasever指定的操作系统的版本,是个整数,我的linux是centos6.5,这里$releasever的值就是6了;$basearch指的是系统的架构,我的是32位机器,因此这里时i386,那么我们拼出的网址就是“http://mirrorlist.centos.org/?release=6&arch=i386&repo=os”,访问一下:
哦,原来如此,yum还是比较智能,它会在配置文件给出的地址集合中选择速度最快的来下载rpm包,因此才出现了上面的网易和阿里云,前面提出的第一个问题也就解决了。好,这就是yum源的原理,希望你看后不再对yum命令如雾里看花一般。接下来的文章我们来看看如何配置本地yum源和如何指定具体的国内yum源。