Chinaunix首页 | 论坛 | 博客
  • 博客访问: 96931
  • 博文数量: 26
  • 博客积分: 747
  • 博客等级: 军士长
  • 技术积分: 280
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-28 09:37
文章分类

全部博文(26)

文章存档

2012年(2)

2011年(24)

我的朋友

分类: 服务器与存储

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

 

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

 

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

Epel源也有很大的用处。

 

国内的两大门户站点,网易和搜狐对开源软件支持力度都很大。分别建立了mirrors.163.commirrors.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/

 

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

 

和这个源相配套,客户机上的/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

 

如果自己buildrpm文件加入了数字签名,可以在上述文件中增加一行 :

#gpgcheck=1

 

通过上面的描述,大家已经看到如何为CentOS建立一个官方源的镜像、如何建立一个第三方源--例如Fedora Epel源的镜像。另外还看到了如何建立一个自定义的源的方法。希望能对读者有所帮助。

阅读(2305) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~