时间:2023-06-02 16:16:41 来源: 人气:
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,