1. 尽管有很多的免费镜像提供yum源服务,但是还是有必要建立自己的yum服务器,主要出于以下几点考虑: l 网络速度:访问互联网可能比较慢 l 节省带宽:如果有大量的服务器,架设自己的yum源可以有效节省互联网带宽 l 联网限制:对于有些内网服务器,不能连接到互联网 l 对于RHEL(Redhat Enterprise Linux),需要购买服务 l 便于发布自己开发的rpm包 2. 找到适合你的站点的yum同步源,主要是CentOS标准软件仓库、epel、以及rpmforge CentOS标准仓库选择列表 Asian: http://www.centos.org/modules/tinycontent/index.php?id=32 North American http://www.centos.org/modules/tinycontent/index.php?id=30 Epel源选择列表 http://mirrors.fedoraproject.org/publiclist/EPEL/ Rpmforge源 http://apt.sw.be/ 要选尽量离你的local服务器近的地区,并支持RSYNC,方便更新同步 我选择的是Linux Kernel Archives CentOS标准软件仓库 rsync://mirrors.kernel.org/centos Epel源 rsync://mirrors.kernel.org/fedora-epel Rpmforge源 rsync://ftp-stud.fht-esslingen.de/dag rsync://mirror.cpsc.ucalgary.ca/dag 3. 编写同步脚本,根据需求进行自动同步 [root@cc-system-manager1 bin]# vi update_yum_source.sh #!/bin/bash #========================================== # Program : update_yum_source.sh # Info : 定期同步官方 yum 源到本机 # Version : 2013.03.05 First Release #========================================== Date=`date +%Y%m%d` LogFile="/tmp/update_yum_source.log" CentOSTrunkVer="5" CentOSCurrentVer="5.9" RsyncBin="/usr/bin/rsync" RsyncPerm="-avrt --delete --exclude=debug/ --exclude=isos/" CentOS_Trunk_Ver_Path="/servers/yum_update/$CentOSTrunkVer" CentOS_Current_Ver_Path="/servers/yum_update/$CentOSCurrentVer" YumSiteList="rsync://mirrors.kernel.org/centos" echo "---- $Date `date +%T` Begin ----" >>$LogFile # centos 5 $RsyncBin $RsyncPerm $YumSiteList/$CentOSTrunkVer/ \ $CentOS_Trunk_Ver_Path/ >> $LogFile # centos 5.9 $RsyncBin $RsyncPerm $YumSiteList/$CentOSCurrentVer/ \ $CentOS_Current_Ver_Path/ >> $LogFile echo "---- $Date `date +%T` End ----" >> $LogFile [root@cc-system-manager1 bin]# vi update_epel_source.sh #!/bin/bash #========================================== # Program : update_epel_source.sh # Info : 定期同步官方 epel 源到本机 # Version : 2013.03.05 First Release #========================================== Date=`date +%Y%m%d` LogFile="/tmp/update_epel_source.log" RsyncBin="/usr/bin/rsync" RsyncPerm="-avrt --delete --exclude=4/ --exclude=4AS/ --exclude=4ES/ --exclude=4WS/ --exclude=6/ --exclude=testing/" #============ epel ============== epelSite="rsync://mirrors.kernel.org/fedora-epel" epelLocalPath="/servers/epel" echo "---- $Date `date +%T` Begin ----" >>$LogFile # epel $RsyncBin $RsyncPerm $epelSite $epelLocalPath >> $LogFile echo "---- $Date `date +%T` End ----" >> $LogFile [root@cc-system-manager1 bin]# vi update_rpmforge_socure.sh #!/bin/bash #========================================== # Program : update_rpmforge_source.sh # Info : 定期同步官方 rpmforge 源到本机 # Version : 2013.03.05 First Release #========================================== Date=`date +%Y%m%d` LogFile="/tmp/update_rpmforge_source.log" RsyncBin="/usr/bin/rsync" RsyncPerm="-avrt --delete --exclude=i386/ --exclude=ppc/ --exclude=source/" # rpmforge #rpmforgeSite="rsync://apt.sw.be/redhat/el5/en/" rpmforgeSite="rsync://ftp-stud.fht-esslingen.de/dag/redhat/el5/en/" rpmforgeLocalPath="/servers/rpmforge" echo "---- $Date `date +%T` Begin ----" >>$LogFile # rpmforge $RsyncBin $RsyncPerm $rpmforgeSite $rpmforgeLocalPath >> $LogFile echo "---- $Date `date +%T` End ----" >> $LogFile 4. 在apache的配置文件里做好相应的软连接或者修改主目录指向 cd /var/www/html/ ln -s /servers/yum_update/ yum ln -s /servers/epel epel ln -s /servers/rpmforge rpmforge 5. 分别创建3个repo的配置文件,指向本地源所在的服务器,注意目录 [root@cc-monitor yum.repos.d]# vi CentOS-Base.repo [base] name=CentOS-$releasever - Base baseurl=http://172.25.6.8/yum/$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://172.25.6.8/yum/$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://172.25.6.8/yum/$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://172.25.6.8/yum/$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://172.25.6.8/yum/$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://172.25.6.8/yum/$releasever/contrib/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 [root@cc-monitor yum.repos.d]# vi epel.repo [epel] name=Extra Packages for Enterprise Linux 5 - $basearch baseurl=http://172.25.6.8/epel/5/$basearch failovermethod=priority enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL [epel-debuginfo] name=Extra Packages for Enterprise Linux 5 - $basearch - Debug baseurl=http://172.25.6.8/epel/5/$basearch/debug failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL gpgcheck=1 [epel-source] name=Extra Packages for Enterprise Linux 5 - $basearch - Source baseurl=http://172.25.6.8/epel/5/SRPMS failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL gpgcheck=1 [root@cc-monitor yum.repos.d]# vi rpmforge.repo [rpmforge] name = RHEL $releasever - RPMforge.net - dag baseurl = http://172.25.6.8/rpmforge/$basearch/rpmforge enabled = 1 protect = 0 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge gpgcheck = 1 [rpmforge-extras] name = RHEL $releasever - RPMforge.net - extras baseurl = http://172.25.6.8/rpmforge/$basearch/extras enabled = 0 protect = 0 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge gpgcheck = 1 [rpmforge-testing] name = RHEL $releasever - RPMforge.net - testing baseurl = http://172.25.6.8/rpmforge/$basearch/testing enabled = 0 protect = 0 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge gpgcheck = 1 6. 检查gpg key是否完整 [root@cc-monitor ~]# ll /etc/pki/rpm-gpg/ total 24 -rw-r--r-- 1 root root 1512 Apr 25 2010 RPM-GPG-KEY-beta -rw-r--r-- 1 root root 1504 Apr 25 2010 RPM-GPG-KEY-CentOS-5 -rw-r--r-- 1 root root 1698 Apr 15 2012 RPM-GPG-KEY-EPEL 如果缺少gpg key可以用rpm导入 #在本地yum源服务器 wget http://apt.sw.be/RPM-GPG-KEY.dag.txt mv RPM-GPG-KEY.dag.txt RPM-GPG-KEY-rpmforge #在需要yum安装的客户端执行 rpm --import http://172.25.6.8/rpmforge/RPM-GPG-KEY-rpmforge 7. 测试三种Yum源是否可行 #情况缓存 [root@cc-monitor ~]# yum clean all Loaded plugins: fastestmirror Cleaning up Everything #列出可用的仓库一共有22465的可用包 [root@cc-monitor ~]# yum repolist repo id repo name status addons enabled: 0 CentOS-5 - Addons base enabled: 3,641 CentOS-5 - Base epel enabled: 7,244 Extra Packages for Enterprise Linux 5 - x86_64 extras enabled: 266 CentOS-5 - Extras rpmforge enabled: 11,158 RHEL 5 - RPMforge.net - dag updates enabled: 156 CentOS-5 - Updates repolist: 22,465 测试CentOS标准软件仓库 [root@cc-monitor ~]# yum install nspr nspr-devel Loaded plugins: fastestmirror Determining fastest mirrors Resolving Dependencies --> Running transaction check ---> Package nspr.i386 0:4.9.2-2.el5_9 set to be updated ---> Package nspr.x86_64 0:4.9.2-2.el5_9 set to be updated ---> Package nspr-devel.i386 0:4.9.2-2.el5_9 set to be updated ---> Package nspr-devel.x86_64 0:4.9.2-2.el5_9 set to be updated --> Finished Dependency Resolution 测试epel [root@cc-monitor ~]# yum install nginx Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package nginx.x86_64 0:0.8.55-2.el5 set to be updated --> Processing Dependency: libxslt.so.1()(64bit) for package: nginx --> Processing Dependency: libgd.so.2()(64bit) for package: nginx --> Processing Dependency: libexslt.so.0()(64bit) for package: nginx --> Processing Dependency: libGeoIP.so.1()(64bit) for package: nginx --> Running transaction check ---> Package GeoIP.x86_64 0:1.4.8-1.el5 set to be updated ---> Package gd.x86_64 0:2.0.33-9.4.el5_4.2 set to be updated --> Processing Dependency: pkgconfig for package: gd --> Processing Dependency: libXpm.so.4()(64bit) for package: gd ---> Package libxslt.x86_64 0:1.1.17-4.el5_8.3 set to be updated --> Running transaction check ---> Package libXpm.x86_64 0:3.5.5-3 set to be updated ---> Package pkgconfig.x86_64 1:0.21-2.el5 set to be updated --> Finished Dependency Resolution 测试rpmforge [root@cc-monitor ~]# yum install htop Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile rpmforge Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package htop.x86_64 0:1.0.2-1.el5.rf set to be updated --> Finished Dependency Resolution (责任编辑:IT) |