1. 儘管有不少的免費鏡像提供yum源服務,可是仍是有必要創建本身的yum服務器,主要出於如下幾點考慮:php
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
http://www.centos.org/modules/tinycontent/index.php?id=30
Epel源選擇列表
http://mirrors.fedoraproject.org/publiclist/EPEL/
要選儘可能離你的local服務器近的地區,並支持RSYNC,方便更新同步
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
|
參考資料