转自:http://blog.chinaunix.net/uid-22141042-id-1789605.html
不得不说,RedHat的确很邪恶,如果我们直接用他自带的系统碟做YUM源的话,总是会得到类似下面的信息:
media://1192656534.547140%232/httpd-2.2.3-11.el5.i386.rpm:[Errno 4] IOError: <urlopen error unknown url type: media>
Trying other mirror.
Error: failed to retrieve httpd-2.2.3-11.el5.i386.rpm from rhel
error was [Errno 4] IOError: <urlopen error unknown url type: media>
不过,还好Linux是开源的,我们可以自己RH的rpm包自己来架设一个源。
首先,我们按照他的目前结构把光盘上所有的文件拷贝一份到服务器上(假设服务器目录为/yumrepo)
# mount /dev/cdrom /mnt
# cp -ar /mnt/* /yumrepo
然后,我们要先安装一个RPM包才能开始架设YUM仓库
# cd /yumrepo/Server
# rpm -ihv createrepo-0.4.4-2.fc6.noarch.rpm
warning: createrepo-0.4.4-2.fc6.noarch.rpm: Header V3 DSA signature: NOKEY, keyID 37017186
Preparing... ########################################### [100%]
1:createrepo ########################################### [100%]
这个包安装之后,会生成一个新的命令:/usr/bin/createrepo,而这个命令是我下面必须要用到的。
首先生成最重要的东西,是最基本的RPM:
#cd /yumrepo/Server
# cp repodata/comps-rhel5-server-core.xml /root
# rm -rf repodata
# createrepo -g /root/comps-rhel5-server-core.xml .
2159/2159 - xorg-x11-drv-cyrix-1.1.0-4.i386.rpm
Saving Primary metadata
Saving file lists metadata
Saving other metadata
comps-rhel5-server-core.xml这个文件保存的是分组的信息,这个是createrepo这个命令不能自动生成的,我们要先把这个信息保存下来。
然后其他的几个目录,Cluster,ClusterStorage,VT也按上面的方法做一次,要注意的是comps-rhel5-server-core.xml这个文件名会不相同,但都以comps开头。我们的YUM仓库到这里也就建好了。
接下来,我们要做的就是要设置/etc/yum.repo.d里面的内容了,大家按我这个里面的写就是:
[Server]
name=Red Hat Enterprise Linux Server Core
baseurl=file:///yumrepo/Server
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[VT]
name=Red Hat Enterprise Linux Virtual Technology
baseurl=file:///yumrepo/VT
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[Cluster]
name=Red Hat Enterprise Linux Cluster
baseurl=file:///yumrepo/Cluster
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[ClusterStorage]
name=Red Hat Enterprise Linux Cluster Storage
baseurl=file:///yumrepo/ClusterStorage
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
当然,你也可以通过http与ftp方式把这个目录发布出去,那只要把相关的file:///yumrepo/这部分修改一下就可以了。
PS:
也可以修改这个文件:/usr/lib/python2.4/site-packages/yum/yumRepo.py中的411行来直接使用光盘做YUM仓库
比如我们上面的例子中,可改为:
remote = url + '/' + relative
改为:
remote = “/mnt” + '/' + relative
其中mnt为你光盘的挂载点