转:http://salogs.com/2010/04/%E9%85%8D%E7%BD%AEyum%E6%BA%90%E5%B9%B6%E4%B8%8E%E5%85%AC%E7%BD%91%E5%90%8C%E6%AD%A5%E6%9B%B4%E6%96%B0/
写得很好,测试可以用,正在同步了
------------下文引用上述网址,感谢原作者的贡献--------------------

尽管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服务。
最后将脚本加入到计划任务中每日执行一次:
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安装程序时就通过自己的源安装了。

--------------------------上述内容引用前文链接-------------------------------------

 

这几天已经同步完了,也可以做成ftp来访问
一、将下载下来的文件,生成依赖关系
createrepo -g /data/yum/epel/5/i386/repodata/repomd.xml /data/yum/epel/5/i386/repodata/
createrepo -g /data/yum/epel/5/SRPMS/repodata/repomd.xml /data/yum/epel/5/SRPMS/repodata/

二、将链接挂载到ftp根目录 下
1、在ftp目录下创建空目录
cd /var/ftp/pub/   
mkdir i386
mkdir SRPMS
  2、将rpm目录挂载到空目录i386和SRPMS
mount --bind /data/yum/epel/5/i386 i386
mount --bind /data/yum/epel/5/SRPMS SRPMS
从浏览器打开可以看见i386下面的rpm文件(如果用ln -s 创建软链接的话则无法访问,之前不知道试了修改访问权限和所属用户都不行-_-||)

三、更改软件仓库文件
nano /etc/yum.repos.d/yum.repo
[Yum-ftp]
name=base
baseurl=ftp://IP/pub/i386

[Yum-ftp2]
name=base2
baseurl=ftp://IP/pub/SRPMS

enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

四、 yum check-list
[root@localhost ~]# yum check-update
Yum-ftp                                                                      | 1.1 kB     00:00    
Yum-ftp/primary                                                              | 1.7 MB     00:00    
Yum-ftp                                                                                   4921/4921
Yum-ftp2                                                                     | 1.1 kB     00:00    
Yum-ftp2/primary                                                             | 806 kB     00:00    
Yum-ftp2                                                                                  2932/2932

lua.i386                                            5.1.4-4.el5                              Yum-ftp
perl-Net-Daemon.noarch                              0.44-7.el5                               Yum-ftp

OK,完毕。

五、安装cacti
yum install cacti
报错
Downloading Packages:
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 217521f6
Public key for cacti-0.8.7f-1.el5.noarch.rpm is not installed

安装sohu的key 就可以
rpm --import http://mirrors.sohu.com/fedora-epel/RPM-GPG-KEY-EPEL