CentOS下建立本地YUM源並自動更新

 1.          儘管有很多的免費鏡像提供yum源服務,但是還是有必要建立自己的yum服務器,主要出於以下幾點考慮:

l  網絡速度:訪問互聯網可能比較慢

l  節省帶寬:如果有大量的服務器,架設自己的yum源可以有效節省互聯網帶寬

l  聯網限制:對於有些內網服務器,不能連接到互聯網

l  對於RHELRedhat 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.          分別創建3repo的配置文件,指向本地源所在的服務器,注意目錄

[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

 

 

參考資料

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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章