()举例
接下来以具体例子来说明如何制作本地源,以下例子都修改自网上资料,忘了记录出处,敬请原谅。
1先以rhel-5-server-i386-dvd.iso为例,制作之前先来看下rhel5映像文件的目录结构,
 yum本地源 baseurl repodata repomd.xml comps.xml(二)_repodata
主要有ClusterClusterStorageServerVT目录,目录里头除了含用rpm包文件外,还分别含有一个repodata目录,这相当于对包进行了分组管理,所以在写baseurl路径时,都要将它们的路径分写上,不过,平时用的软件包都在Server目录中,其它目录中的软件包很少用到。注意:repodata目录中,除了含有那四个基本文件外,还将相应的comps.xml组文件加了进去。
下面是具体的设置过程:
1. 设置 iso 文件的自动挂载并安装 createrepo
mkdir /media/rhel
mount -o loop rhel-5-server-i386-dvd.iso /media/rhel
#如果是光盘,则mount –t iso9660 /dev/cdrom /media/rhel
vi /etc/fstab
/dev/cdrom /media/rhel iso9660 ro 0 0
#可设为开机自动挂载,看你需要啦!
mount –a
#重新挂载所有
rpm -ivh /media/rhel/Server/createrepo-0.4.11-3.el5.noarch.rpm #repodata生成工具这个肯定要装

2.
配置 repo
cd /etc/
yum.repos.d
mv rhel-debuginfo.repo rhel-debuginfo.repo~
vi rhel-media.repo
1.         [Cluster]
2.         name=Red Hat Enterprise Linux $releasever - $basearch - Cluster
3.         baseurl=file:///media/rhel/Cluster  # Cluster目录下存在repodata目录enabled=1
4.          gpgcheck=1   ##1为激活gpg检测,0为否
5.         gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
6.          ##对应的rpm包的验证文件,若设置gpgcheck=0,则可以不用这一项
7.         [ClusterStorage]
8.         name=Red Hat Enterprise Linux $releasever - $basearch - ClusterStorage
9.          baseurl=file:///media/rhel/ClusterStorage #同上
10.     enabled=1
11.     gpgcheck=1
12.     gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
13.      
14.     [Server]
15.     name=Red Hat Enterprise Linux $releasever - $basearch - Server
16.     baseurl=file:///media/rhel/Server
17.     enabled=1
18.     gpgcheck=1
19.     gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
20.      
21.     [VT]
22.     name=Red Hat Enterprise Linux $releasever - $basearch - VT
23.     baseurl=file:///media/rhel/VT
24.     enabled=1
25.     gpgcheck=1
26.     gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
3. 创建所需目录设置到这里个人认为可以完成了,但具体没有实践过
mkdir -p /var/rhel/{Cluster,ClusterStorage,Server,VT}

4. createrepo:
生成repodata软件信息仓库
createrepo -o /var/rhel/Cluster -g /media/rhel/Cluster/repodata/comps-rhel5-
cluster.xml /media/rhel/Cluster   # -o选项为设置repodata目录的输出位置,没有的话就在当前目录中输出;-g选项指定查找组文件的位置;最后的路径表示rpm包目录的位置,并且只要在所查找的路径下含有此目录即可,程序会自动向下查找的了。
createrepo -o /var/rhel/ClusterStorage -g/media/rhel/ClusterStorage/repodata/comps-rhel5-cluster-st.xml/media/rhel/ClusterStorage
createrepo -o /var/rhel/Server -g /media/rhel/Server/repodata/comps-rhel5-server-core.xml /media/rhel/Server
createrepo -o /var/rhel/VT -g /media/rhel/VT/repodata/comps-rhel5-vt.xml /media/rhel/VT

5.
避免无谓的下载

mount --bind /var/rhel/Cluster/repodata /media/rhel/Cluster/repodata
mount --bind /var/rhel/ClusterStorage/repodata /media/rhel/ClusterStorage/repodata
mount --bind /var/rhel/Server/repodata /media/rhel/Server/repodata
mount --bind /var/rhel/VT/repodata /media/rhel/VT/repodata
#可加入 /etc/rc.local 开机自动绑定。
#命令mount –-bind olddir newdir
—bind
选项的作用是,让普通目录像设备一样挂到任一目录上,所以上述命令的作用是将olddir目录挂载到newdir目录,或者可以看成是olddir目录映射到newdir目录,对目录增删文件,实质都是在 newdir目录中进行。若想将挂载项写到fstab中,但如果开启了SElinux,开机不会挂载成功,但可用mount –a挂载。对于示例中所说“避免无谓的下载”,我也搞不清所谓的“下载是什么意思”,据我了解每当用yum安装软件时,都会将repodata目录中的内容下载下来,保存在一个缓存中,其路径为/var/cache/yum/[源名称目录]/,而示例所示路径与系统默认路径不同,如有谁知道这个“下载”是指啥意思?记得告诉我。也许这里的目的纯粹是为了将新建的repodata仓库用上罢了,因为如果直接用光盘repodata目录下的文件,可以会出错,导至不成功,重新生成repodata是最好最保险最好的做法。
6. 清除缓存
yum clean all