先新建一个repo文件
# nano /etc/yum.repos.d/centos.repo
放入如下内容:
[russia-repo]
name=$basearch
baseurl=http://centos.alt.ru/repository/centos/5/$basearch/
enabled=1
gpgcheck=0
protect=1
 
(或者进行如下操作:
# rpm –import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
# nano /etc/yum.repos.d/centos.repo
在里面添加下面的信息:
[centos]
name=centos repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
protect=1 )
(启用 EPEL repo
i386
rpm -ihv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
x86_64
rpm -ihv http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
因为上面已建立repo文件,这里其实就不需要安装epel的rpm包了)
--------------------------------------------------------------------------------------------------

配置yum源并与公网同步更新

尽管sohu和163都推出了mirrors服务,但当要配置多台服务器时仍然需要占用很多公网带宽,因此配置一个本地yum源并时常与公网同步就 显得非常有必要了。本文介绍的就是针对CentOS 5.4 配置yum源,  并且每日同步公网数据。每日的同步使用rsync协议,这里要注意并不是所有的mirrors站点都支持rsync协议,不过不用担 心,下文有更新脚本, 里面有我测试过的几个支持rsync协议的mirros站点。

配置yum源

本文要配置3个yum软件仓库,分别为:CentOS标准软件仓库、epel、以及rpmforge。经过多次尝试,定位了速度和更新频率都比较理想的几个站点。更多的mirrors站点参见以下网址:
CentOS:http://www.centos.org/modules/tinycontent/index.php?id=32
epel:https://fedoraproject.org/wiki/EPEL
rpmforge:http://apt.sw.be/
同步yum源脚本:
#!/bin/bash

#==========================================
# Program   : update_yum_source.sh
# Info      : 定期同步官方 yum 源到本机
# Version   : 2010.01.28    First Release
#==========================================

Date=`date +%Y%m%d`
LogFile="/data/logs/rsync_yum/$Date.log"
CentOSTrunkVer="5"
CentOSCurrentVer="5.4"
ReceiveMail="nathanzhou@mysite.com"

RsyncBin="/usr/bin/rsync"
RsyncPerm="-avrt --delete --exclude=debug/  --exclude=isos/"
CentOS_Trunk_Ver_Path="/data/soft/mirror.mysite.com/centos/$CentOSTrunkVer"
CentOS_Current_Ver_Path="/data/soft/mirror.mysite.com/centos/$CentOSCurrentVer"
YumSiteList="rsync://mirror.averse.net/centos"

#============ epel ==============
epelSite="rsync://mirrors.sohu.com/fedora-epel/"
epelLocalPath="/data/soft/mirror.mysite.com/epel"

# rpmforge
rpmforgeSite="rsync://apt.sw.be/freshrpms/pub/dag/redhat/el5/"
rpmforgeLocalPath="/data/soft/mirror.mysite.com/rpmforce"

echo "---- $Date `date +%T` Begin ----" >>$LogFile

# centos 5
$RsyncBin $RsyncPerm $YumSiteList/$CentOSTrunkVer/ \
$CentOS_Trunk_Ver_Path >> $LogFile

# centos 5.4
$RsyncBin $RsyncPerm $YumSiteList/$CentOSCurrentVer/ \
$CentOS_Current_Ver_Path  >> $LogFile

# epel
$RsyncBin $RsyncPerm  --exclude=4/ --exclude=4AS/ --exclude=4AS/ \
--exclude=4WS/ --bwlimit=500 $epelSite $epelLocalPath >> $LogFile

# rpmforge
$RsyncBin $RsyncPerm $rpmforgeSite $rpmforgeLocalPath >> $LogFile

echo  "---- $Date `date +%T` End ----" >> $LogFile

/bin/mail -s "opt001 - update yum source - $Date" $ReceiveMail<$LogFile
该脚本只更新了CentOS 5.4的软件包,其它的版本都略过了。根据不同的情况,脚本中还有很多变量需要做相应的修改,如yum保存路径,更新后发送的邮件地址等等。
首 次执行该脚本会下载很多资源,大概60G左右,以后就会差异更新了。同步好软件后,下一步就要配置web服务了,这样client端的yum程序 才能下载我配置好的yum源,当然也可以配置ftp服务。我这里利用nginx作为web服务,并且编译时加入了fancyindex第三方插件,这样 nginx在输出列表时看着舒服些。nginx配置mirrors.mysite.com站点如下:
server
{
listen          80;
server_name     mirrors.mysite.com;
index           index.html index.htm index.php;
root            /data/soft/mirror.mysite.com;
location  /  {
fancyindex on;
fancyindex_exact_size off;
fancyindex_localtime on;

allow 124.42.53.137;
allow 203.86.81.196;
allow 192.168.99.0/24;
deny all;
}
access_log  /var/log/nginx/access_yum.log  access;
}
由于我配置的mirrors站点只为公司内部使用,因此做了些访问控制。
最后将脚本加入到计划任务中每日执行一次:
3 3 * * * /bin/bash /root/bin/update_yum_source.sh

配置客户端yum

由于我新增了2个yum软件仓库,因此yum客户端需要安装相应的软件包:
rpmforge:http://packages.sw.be/rpmforge-release/
EPEL:https://fedoraproject.org/wiki/EPEL
选择系统对应的最新版本下载安装。
安装完成后需要将/etc/yum.repos.d/*.repo 文件中的站点替换为上文nginx配置的站点名,如:CentOS-Base.repo文件:
[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.mysite.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.mysite.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever - Addons
baseurl=http://mirrors.mysite.com/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=http://mirrors.mysite.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://mirrors.mysite.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
baseurl=http://mirrors.mysite.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
epel.repo 和rpmforge.repo文件修改与CentOS-Base.repo文件类似。
需要注意一点的是,我配置的站点是没有经过公网DNS注册的,因此需要修改host文件指定其IP。
文件修改完毕后执行yum clean all;yum makecache
没有报错的话,下次yum安装程序时,就通过自己的源安装了。
----------------------------------------------------------------------------------------------------------------------------
 受限于Linux 升级编译及系统自带软件可能不能满足要求的问题,我们经常需要安装新版本的软件。利用源码编译无疑是方法之一,但我不喜欢,能选择rpm 包安装的,我还是会用rpm 来升级。甚至自己把源码编程rpm 也是不错的方法。这里记录一些常用的RPM Respository(RPM软件仓库)地址备用:
http://www.rpmfind.net/linux/rpm2html  (http://www.rpmfind.net/linux/rpm2html/search.php?query=key word)
http://pkgs.org/#centos-5-rhel-5
http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/
http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/
(有时候你想给你的centos安装一些不太常用的软件时,系统默认自带的源里面可能没有这些包哦,比如
yum install amule
yum install rtorrent
等。。。
添加一个软件仓库的方法:
RPMForge拥有4000多种CentOS的软件包,被CentOS社区认为是最安全也是最稳定的一个软件仓库。
下面我们来安装它:
#yum install yum-priorities
安装完以后,
cat /etc/yum/pluginconf.d/priorities.conf 文件,确认文件中有这一行
[main]
enabled=1
下载rpmforge的安装包(提示:一定要找到与系统平台架构匹配的rpmforge包安装,仔细查看Description中的描述)
可以到这里下到最新的包 http://dag.wieers.com/rpm/packages/rpmforge-release/
i386 http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
x86_64 http://apt.sw.be/redhat/el5/en/x86_64/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
安装DAG的PGP Key:
rpm –import http://apt.sw.be/RPM-GPG-KEY.dag.txt
安装包:
rpm -ivh rpmforge-release-0.3.6-1.el5.rf.*.rpm
现在就可以使用rpmforge这个软件仓库了.)

Les RPM de Remi - Packages
提供Fedora、RHEL 各版本的兼容包。

DAG Apt-Yum RPM package
除提供RHEL、Fedora兼容rpm包外,还有提供Apt版本。

Sohu.com Open Source Mirror Site
搜狐提供的开源软件镜像网站,有CentOS、fedora-epel 及很多开源项目包。

网易开源镜像站
这是网易提供的类似镜像网站,建议用于yum更新。

Fedora EPEL 项目
EPEL 是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。

CentOS Testing package
说是Testing项目,实际上提供了很多新版本的rpm包,例如CentOS 5使用的php 5.2.x 就可以从这里得到。

中国科学技术大学
教育网线路,CPAN、CentOS、EPEL、Debian、Fedora 等镜像。

CentOS 镜像
北京市 网通线路,CentOS官方镜像

以上网址大多提供yum 配置,安装后,可以通过 yum install package-name,随意安装软件。
----------------------------------------------------------------------------------------
更新方法如下:
先进入yum源配置目录

cd /etc/yum.repos.d

备份系统自带的yum源

mv CentOS-Base.repo CentOS-Base.repo.save

下载其他更快的yum源

中科大的yum源:

wget http://centos.ustc.edu.cn/CentOS-Base.repo

163的yum源:

wget http://mirrors.163.com/.help/CentOS-Base-163.repo

sohu的yum源

wget http://mirrors.sohu.com/help/CentOS-Base-sohu.repo

更新玩yum源后,建议更新一下,使操作立即生效

yum makecache