服务器 频道

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

  【IT168 技术】笔者负责在北京生命科学研究所,黄牛博士实验室管理一个超过300台规模的Linux Cluster,最初安装的操作系统是CentOS 5.1 x86_64,到目前已经逐渐升级到了CentOS 5.6。

  在运维过程中,经常需要安装、升级各种软件,而安装、升级软件最方便的办法,莫过于使用CentOS的yum机制了。

  安装和升级软件是管理员最常见的工作之一,如果每台机器都从官方网站升级软件,单位的40M带宽根本无法满足要求。所以必须建立一个CentOS官方的镜像站。另外FedoraEpel源也有很大的用处。

  国内的两大门户站点,网易和搜狐对开源软件支持力度都很大。分别建立了mirrors.163.com和mirrors.sohu.com两个镜像站点。其中搜狐的站点还支持rsync同步协议。而且速度极快。

  首先我们要建立一个CentOS官方的镜像,修改/etc/crontab文件,添加如下一行。

  45 4 * * * root /usr/bin/rsync -H -aPS --delete --exclude SRPMS \

  --exclude apt --exclude build --exclude screenshots --exclude testing \

  --exclude s390 --exclude s390x --exclude alpha --exclude ia64 \

  --exclude debug O --exclude i386 --exclude ppc --exclude ppc64 \

  --exclude development --exclude core --exclude test --exclude Live \

  --exclude testing --exclude iso --exclude isos \

  rsync://mirrors.sohu.com/centos/5.6/ /var/ftp/yum/centos56/

  这一行代表系统会在每天的凌晨4点45分,和sohu的镜像站同步一次,这个时间单位基本无人上网,所以网速很快。另外由于我们只用64位的Linux系统,所以就无需下载i386、ppc等架构的软软件包。生产系统也无需使用development、test等版本。

  和这个源相配套,客户机上的/etc/yum.repos.d/CentOS-Base.repo 文件是这样格式的

  [base]

  name=CentOS-$releasever - Base

  baseurl=ftp://192.168.0.100/yum/centos56/os/x86_64

  gpgcheck=1

  enable=1

  gpgkey=ftp://192.168.0.100/yum/centos56/os/x86_64/RPM-GPG-KEY-CentOS-5

  [updates]

  name=CentOS-$releasever - Updates

  baseurl=ftp://192.168.0.100/yum/centos56/updates/x86_64

  gpgkey=ftp://192.168.0.100/yum/centos56/os/x86_64/RPM-GPG-KEY-CentOS-5

  enable=1

  主要的改动就是去掉文件中原有的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
相关文章