分类: 服务器与存储
2011-10-24 13:46:37
马路遥,北京生命科学研究所信息化平台工程师,2002年获得大陆的第一张RHCE证书(Red Hat Certified Engineer),同时拥有IBM DB2数据库管理员证书(701),现在是北京生命科学研究所,黄牛博士实验室的 Linux Cluster Administrator。他平时喜欢研究Linux的相关技术,例如IPV6、均衡负载、高性能计算和网格计算等。
笔者负责在北京生命科学研究所,黄牛博士实验室管理一个超过300台规模的Linux Cluster,最初安装的操作系统是CentOS 5.1 x86_64,到目前已经逐渐升级到了CentOS 5.6。
在运维过程中,经常需要安装、升级各种软件,而安装、升级软件最方便的办法,莫过于使用CentOS的yum机制了。
安装和升级软件是管理员最常见的工作之一,如果每台机器都从官方网站升级软件,单位的40M带宽根本无法满足要求。所以必须建立一个CentOS官方的镜像站。另外Fedora
Epel源也有很大的用处。
国内的两大门户站点,网易和搜狐对开源软件支持力度都很大。分别建立了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源的镜像。另外还看到了如何建立一个自定义的源的方法。希望能对读者有所帮助。