yum本地源 baseurl repodata repomd.xml comps.xml(二)

( ) 举例
接下来以具体例子来说明如何制作本地源,以下例子都修改自网上资料,忘了记录出处,敬请原谅。
1 先以 rhel-5-server-i386-dvd.iso 为例 ,制作之前先来看下 rhel5 映像文件的目录结构,
 
主要有 Cluster ClusterStorage Server VT 目录,目录里头除了含用 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 �Ct iso9660 /dev/cdrom /media/rhel
vi /etc/fstab
/dev/cdrom /media/rhel iso9660 ro 0 0
# 可设为开机自动挂载,看你需要啦!
mount �Ca
# 重新挂载所有
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.         [ClusterS tor age]
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 �C-bind olddir newdir
―bind
选项的作用是,让普通目录像设备一样挂到任一目录上,所以上述命令的作用是将 olddir 目录挂载到 newdir 目录,或者可以看成是 olddir 目录映射到 newdir 目录,对目录增删文件,实质都是在 newdir 目录中进行。若想将挂载项写到 fstab 中,但如果开启了 SElinux ,开机不会挂载成功,但可用 mount �Ca 挂载。对于示例中所说“避免无谓的 下载 ”,我也搞不清所谓的“下载是什么意思”,据我了解每当用 yum 安装软件时,都会将 repodata 目录中的内容下载下来,保存在一个缓存中,其路径为 /var/cache/yum/[ 源名称目录 ]/ ,而示例所示路径与系统默认路径不同,如有谁知道这个“下载”是指啥意思?记得告诉我。也许这里的目的纯粹是为了将新建的 repodata 仓库用上罢了,因为如果直接用光盘 repodata 目录下的文件,可以会出错,导至不成功,重新生成 repodata 是最好最保险最好的做法。
6. 清除缓存
yum clean all

你可能感兴趣的:(yum本地源,baseurl,repomd.xml,repodata,comps.xml)