(一)相关讲解
repodata作为软件的仓库,其目录下有四个必要文件:filelists.xml.[gz],other.xml.[gz],primary.xml.[gz]和repomd.xml(md 意思是 metadata),其中最主要的是repomd.xml文件,原因是我们用光盘或ISO文件制作本地源时常看到下面类似的错误:
* c5-media:
file:///media/CentOS/repodata/repomd.xml: [Errno 5] OSError: [Errno 2] 没有那个文件或目录: '/media/CentOS/repodata/repomd.xml'

Trying other mirror.
file:///media/cdrecorder/
repodata/repomd.xml: [Errno 5] OSError: [Errno 2] 没有那个文件或目录: '/media/cdrecorder/repodata/repomd.xml'
Trying other mirror.
file:///media/cdrom/
repodata/repomd.xml: [Errno 5] OSError: [Errno 2] 没有那个文件或目录: '/media/cdrom/repodata/repomd.xml'
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository: c5-media. Please verify its path and try again
以上的错误提是说找不到repodata目录或文件,而错误的原因通常有三个:一是路径问题;二是没有生成repodate目录;三是*.repo配置文件冲突(这个需要特意注意)。
从CentOS 5(或rhel5)以后,系统光盘或ISO文件里大都已帮我们生成了repodata目录(但不排除没有),而5.0以前的版本则没有,需要我们用createrepo生成,此命令会根据rpm包的依赖关系,生成对应的repodata目录(软件仓库),就此目录,很重要的一个目录,名字也是固定的,里面就是保存有这四个文件:filelists.xml.[gz],other.xml.[gz],primary.xml.[gz]和repomd.xml.[gz](通常还会有comps.xml文件,下面会提到)。对于以上的错误例子,从c5-media可知系统是5.0以上的,系统光盘是自带有repodata目录,所以很明显是路径或*.repo文件的问题,但不排除没有repodata目录这种情况,具体有没有,打开光盘看下就知道了呗,如果确实没有,那就就生成了呗,下面会说到。
现在来看下/etc/yum.repos.d/CentOS-Media.repo配置文件的内容:
[c5-media]
name=CentOS-$releasever – Media
#name 就是 name了,其格式代表了“操作系统名和释出版本”- “base”是表明此段寻找的是base包信息。
base
 
   url=file:///media/CentOS/
file:///media/cdrom/
file:///media/cdrecorder/
#“baseurl”代表yum在互联网上所查找的链接地址。这里需要解释一下
#“$basearch”代表了系统的构架格式如“i386”和“repodata”存放repomd.xml文件的文件夹位置。
#“repomd.xml”作用,提供了“更新.xml.gz”的下载信息和SHA校验值。
#这里“repomd.xml”里包括了3个文件 “other.xml.gz””filelists.xml.gz””primary.xml.gz”
#作用很明显了,“其他更新包列表”“更新文件集中列表”“主要更新包列表”
gpgcheck=1
#gpgcheck 校验,你需要在配置文件里注明GPG-RPM-KEY的位置。
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-beta
#GPG-RPM-KEY的位置


总结:其实大多数是因为路径问题;不必指定特定的目录:

例如:本地安装

[Server]
name= thisisa local yum
baseurl=file:///mnt/cdrom/Packages/    --安装包指定位置
baseurl=file:///mnt/cdrom/            -- 指定repodata
#baseurl=file:///mnt/cdrom        --直接指定这个路径就可,将先找到               repodata 然后根据这个文件的repodata 中的 repomd.xml找到 安装包的位置
enabled=1--启用  (0:表示不启用)
gpgcheck=1--检查数字签名
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release



用centos 的yum源服务器

[base]
name=CentOS-6.5 - Base - 163.com
#baseurl=http://mirrors.163.com/centos/6.5/os/i386/Packages/ --指定特定Packages目录则错误,找不到repodata目录。
baseurl=http://mirrors.163.com/centos/6.5/os/i386/  --不指定则能找到repodata目录的repomo.xml
#mirrorlist=http://mirrorlist.centos.org/?release=6.5&arch=$basearch&repo=os
gpgcheck=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6