- 尽管有很多的免费镜像提供yum源服务,但是还是有必要建立自己的yum服务器,主要出于以下几点考虑:
l 网络速度:访问互联网可能比较慢
l 节省带宽:如果有大量的服务器,架设自己的yum源可以有效节省互联网带宽
l 联网限制:对于有些内网服务器,不能连接到互联网
l 对于RHEL(Redhat Enterprise Linux),需要购买服务
l 便于发布自己开发的rpm包 - 找到适合你的站点的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 - 编写同步脚本,根据需求进行自动同步
[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/
C
e
n
t
O
S
T
r
u
n
k
V
e
r
"
C
e
n
t
O
S
C
u
r
r
e
n
t
V
e
r
P
a
t
h
=
"
/
s
e
r
v
e
r
s
/
y
u
m
u
p
d
a
t
e
/
CentOSTrunkVer" CentOS_Current_Ver_Path="/servers/yum_update/
CentOSTrunkVer"CentOSCurrentVerPath="/servers/yumupdate/CentOSCurrentVer"
YumSiteList=“rsync://mirrors.kernel.org/centos”
echo "----
D
a
t
e
‘
d
a
t
e
+
Date `date +%T` Begin ----" >>
Date‘date+LogFile
centos 5
$RsyncBin $RsyncPerm
Y
u
m
S
i
t
e
L
i
s
t
/
YumSiteList/
YumSiteList/CentOSTrunkVer/
$CentOS_Trunk_Ver_Path/ >> $LogFile
centos 5.9
$RsyncBin $RsyncPerm
Y
u
m
S
i
t
e
L
i
s
t
/
YumSiteList/
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 "----
D
a
t
e
‘
d
a
t
e
+
Date `date +%T` Begin ----" >>
Date‘date+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 "----
D
a
t
e
‘
d
a
t
e
+
Date `date +%T` Begin ----" >>
Date‘date+LogFile
rpmforge
$RsyncBin $RsyncPerm $rpmforgeSite $rpmforgeLocalPath >> $LogFile
echo “---- $Date date +%T
End ----” >> KaTeX parse error: Expected 'EOF', got '#' at position 215: …or yum.repos.d]#̲ vi CentOS-Base…releasever - Base
baseurl=http://172.25.6.8/yum/
r
e
l
e
a
s
e
v
e
r
/
o
s
/
releasever/os/
releasever/os/basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
#released updates
[updates]
name=CentOS-
r
e
l
e
a
s
e
v
e
r
−
U
p
d
a
t
e
s
b
a
s
e
u
r
l
=
h
t
t
p
:
/
/
172.25.6.8
/
y
u
m
/
releasever - Updates baseurl=http://172.25.6.8/yum/
releasever−Updatesbaseurl=http://172.25.6.8/yum/releasever/updates/KaTeX parse error: Expected 'EOF', got '#' at position 74: …G-KEY-CentOS-5 #̲packages used/p…releasever - Addons
baseurl=http://172.25.6.8/yum/
r
e
l
e
a
s
e
v
e
r
/
a
d
d
o
n
s
/
releasever/addons/
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-
r
e
l
e
a
s
e
v
e
r
−
E
x
t
r
a
s
b
a
s
e
u
r
l
=
h
t
t
p
:
/
/
172.25.6.8
/
y
u
m
/
releasever - Extras baseurl=http://172.25.6.8/yum/
releasever−Extrasbaseurl=http://172.25.6.8/yum/releasever/extras/KaTeX parse error: Expected 'EOF', got '#' at position 74: …G-KEY-CentOS-5 #̲additional pack…releasever - Plus
baseurl=http://172.25.6.8/yum/
r
e
l
e
a
s
e
v
e
r
/
c
e
n
t
o
s
p
l
u
s
/
releasever/centosplus/
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-
r
e
l
e
a
s
e
v
e
r
−
C
o
n
t
r
i
b
b
a
s
e
u
r
l
=
h
t
t
p
:
/
/
172.25.6.8
/
y
u
m
/
releasever - Contrib baseurl=http://172.25.6.8/yum/
releasever−Contribbaseurl=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 -
b
a
s
e
a
r
c
h
b
a
s
e
u
r
l
=
h
t
t
p
:
/
/
172.25.6.8
/
e
p
e
l
/
5
/
basearch baseurl=http://172.25.6.8/epel/5/
basearchbaseurl=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 -
b
a
s
e
a
r
c
h
−
D
e
b
u
g
b
a
s
e
u
r
l
=
h
t
t
p
:
/
/
172.25.6.8
/
e
p
e
l
/
5
/
basearch - Debug baseurl=http://172.25.6.8/epel/5/
basearch−Debugbaseurl=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
r
e
l
e
a
s
e
v
e
r
−
R
P
M
f
o
r
g
e
.
n
e
t
−
d
a
g
b
a
s
e
u
r
l
=
h
t
t
p
:
/
/
172.25.6.8
/
r
p
m
f
o
r
g
e
/
releasever - RPMforge.net - dag baseurl = http://172.25.6.8/rpmforge/
releasever−RPMforge.net−dagbaseurl=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
r
e
l
e
a
s
e
v
e
r
−
R
P
M
f
o
r
g
e
.
n
e
t
−
e
x
t
r
a
s
b
a
s
e
u
r
l
=
h
t
t
p
:
/
/
172.25.6.8
/
r
p
m
f
o
r
g
e
/
releasever - RPMforge.net - extras baseurl = http://172.25.6.8/rpmforge/
releasever−RPMforge.net−extrasbaseurl=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
r
e
l
e
a
s
e
v
e
r
−
R
P
M
f
o
r
g
e
.
n
e
t
−
t
e
s
t
i
n
g
b
a
s
e
u
r
l
=
h
t
t
p
:
/
/
172.25.6.8
/
r
p
m
f
o
r
g
e
/
releasever - RPMforge.net - testing baseurl = http://172.25.6.8/rpmforge/
releasever−RPMforge.net−testingbaseurl=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