服务器 频道

为Linux Cluster建立一个自定义的Yum源

  主要的改动就是去掉文件中原有的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源的镜像。另外还看到了如何建立一个自定义的源的方法。希望能对读者有所帮助。

0
相关文章