主要的改动就是去掉文件中原有的mirrorlist=项,直接使用basurl=项即便除掉了很多非必要的东西,我们的CentOS的容量也有8G之多。初次同步的时候,需要很长时间,以后每天同步更新,基本10分钟之内就可以完成。除非当天突然发布了很多补丁。
再/etc/crontab中再增加下面一行,用于每天同步更新Epel的源。
45 5 * * * /usr/bin/rsync -H -aPS --exclude ppc --exclude i386 \
rsync://mirrors.sohu.com/fedora-epel/5/ /var/ftp/yum/epel/5/
和epel源对应的/etc/yum.repos.d/epel.repo写法如下
[epel]
name=Extra Packages for Enterprise Linux 5 - $basearch
baseurl=ftp://192.168.0.100/yum/epel/5/$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
除去使用一些别人做好的repo之外,有时可能还需要建立一个自定义的源,例如我们每台机器都要安装BioPerl(Bio代表生物,亦即和生命科学相关的Perl库)包,有些带Infiniband的机器要安装OFED相关的包。这样就还需要自定义一个源。
以BioPerl为例,我的做法是从Fedora源中现在相应的源代码包,格式是src.rpm,例如perl-bioperl-VERSION.src.rpm
首先安装之:
rpm -ivh perl-bioperl-VERSION.src.rpm
然后进入指定目录:
cd /usr/src/redhat/SPEC
建立自己的RPM包:
rpmbuild -bb perl-bioperl.spec
执行这个命令之前,可能需要先安装一系列需要依赖的包才可以。bioperl也依赖于一系列软件包,这样要rpmbuild很多的src.rpm才行。最终build出一系列rpm包。将所有build好的rpm包拷贝到ftp服务器的同一目录下,例如
/var/ftp/yum/nibs
然后进入这个目录执行:
createrepo ./
这样会自动生成一个repodata目录,并在该目录下生成文件列表的索引。
其他机器上如果要使用这个自定义的源,可以在/etc/yum.repos.d/中添加如下内容的nibs.repo文件
[nibs]
name=Extra Packages for Enterprise Linux 5 - $basearch
baseurl=ftp://192.168.44.44/yum/nibs
failovermethod=priority
enabled=1
gpgcheck=
#gpgcheck=0
如果自己build的rpm文件加入了数字签名,可以在上述文件中增加一行 :
#gpgcheck=1
通过上面的描述,大家已经看到如何为CentOS建立一个官方源的镜像、如何建立一个第三方源--例如Fedora Epel源的镜像。另外还看到了如何建立一个自定义的源的方法。希望能对读者有所帮助。