CentOS下建立本地YUM源并自动更新

  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

时间: 2025-01-26 18:56:07

CentOS下建立本地YUM源并自动更新的相关文章

CentOS 7 创建本地YUM源的步骤详解

本文中的"本地YUM源"包括三种类型:一是直接使用CentOS光盘作为本地yum源,优点是简单便捷,缺点是光盘软件包可能不完整(centos 7 Everything 总共才6.57G):二是同步CentOS官方源到本地(相当于创建了一个公共镜像),优点是最靠谱,缺点是占空间费流量:三是创建完全自定义的本地源,优点是灵活性最大,缺点是只是作为其他源的补充. 一.使用CentOS光盘作为本地yum源 (1) 实体机上直接放入光盘 (2) VMware Workstation 虚拟机:虚拟

CentOS 7下配置本地yum源及yum客户端

Linux下对于软件包的管理使用rpm管理方式.直接使用rpm包管理工具来进行rpm包的安装,升级,卸载时,对于最让人头疼的莫过与包之间的依赖关系.yum作为一个rpm包前端管理工具,可以自动处理依赖性关系,一次安装所有依赖的软件包,并且支持在线下载.安装.卸载.升级rpm软件包.本文主要描述基于本机,本地yum服务器配置yum源,以及基于公网yum源配置本地客户端,供大家参考. 一.yum源实现的三个机制 1.需要有一个包含各种rpm安装文件的软件仓库(即yum源) 2.有软件仓库的仓库数据库

CentOS 6.5配置本地YUM源

CentOS 6.5配置本地YUM源 默认的yum是以网络来安装的,在没有网络或者网速不佳的情况下,通过yum来安装软件是意见非常痛苦的事情.其实对于CentOS DVD来说,里面提供的软件就足以满足我们的需要了,而且DVD里的软件版本都是稳定版,下载速度还快,对于学习CentOS来说,将CentOS DVD作为默认yum源可以大大提高学习效率. 1.为DVD创建一个挂载目录 [root@localhost ~]# mkdir /media/CentOS 2.在Linux下挂载CentOS DV

RedHat/CentOS利用iso镜像做本地yum源

CentOS是完全免费的,它的yum可以直接使用:而RedHat的yum则需要注册付费才能使用,如果不这样则有两种解决方案,也可以说是三种. 1. 利用iso镜像做本地yum源 2. 利用光盘做本地yum源 3. 利用Centos的在线地址做本地yum源 在这里用iso或者光盘做本地yum源的方法是差不多的,只是用光盘的话Linux系统会自动挂载,用iso镜像的或需要手动挂载,这里就说挂载iso的方法吧. [一]用本地文件创建本地yum源 1. 创建iso存放目录和挂载目录 mkdir /mnt

RHEL 6.2如何配置本地yum源

一.挂载本地光盘到系统:把rhel6.2安装光盘放入光驱,在终端命令行下操作 #mkdir /media/rhel #新建挂载目录 #mount -i /dev/cdrom /media/rhel #挂载光盘到/media/rhel目录下 #cd /media/rhel #进入挂载目录 #ls #查看挂载目录,光盘挂载成功 二.配置本地yum源 #cd /etc/yum.repos.d/ #进入yum配置目录 #touch rhel-media.repo #建立yum配置文件 #vi rhel-

centos系统搭建本地yum服务器的方法_Linux

前言 首先特别说明的是,YUM只是为了解决RPM的依赖关系的问题,而不是一种其它的软件安装模式.虽然在centos中可以直接使用yum源,但是也存在着与外网隔绝的现状,因此需要搭建本地yum源,下面来看看详细的方法. 系统:centos 6.5 1.将光盘挂载到/mnt下面 # mount /dev/cdrom /mnt 2.删除系统自带的repo文件 # cd /etc/yum.repos.d/ # mkdir bak # mv *.repo bak 3.安装createrepo(其实只要安装

【OS】什么是YUM?如何配置本地YUM源?

[OS]什么是YUM?如何配置本地YUM源? 在Linux上安装Oracle数据库的时候常常需要安装一些系统RPM包,但是这些包一般都存在依赖性关系,所以,此时可以借助YUM,配置本地YUM源来很好的解决这个问题.配置本地YUM源的步骤如下所示: 首先创建镜像文件的挂载路径: mkdir -p /media/lhr/cdrom mount /dev/sr0 /media/lhr/cdrom/ 设置开机自动挂载系统镜像文件,在文件/etc/fstab添加以下内容: /dev/sr0 /media/

【Xenserver】(三) 挂载CIFS库 iso镜像配置本地yum源

1.打开xencenter,选择vm,DVD驱动器挂载CIFS库中的目标iso镜像 2.虚拟机挂载iso镜像到目录下 # mkdir /mnt/cdrom/ # mount -o loop /dev/cdrom /mnt/cdrom # mount # umount /mnt/cdrom/ 注:这里mount挂载容易报错,记住一定要用挂载镜像的参数挂载,-o loop!!!!! 3.配置本地yum源 CentOS使用的yum源是在/etc/yum.repos.d/目录下CentOS-Base.r

RedHat Linux RHEL6配置本地YUM源

YUM是Yellow dog Updater Modified的简称,起初是由yellow dog这一发行版的开发者Terra Soft研发,用python写成,那时还叫做yup(yellow dog updater),后经杜克大学的Linux@Duke开发团队进行改进,遂有此名.yum的宗旨是自动化地升级,安装/移除rpm包,收集rpm包的相 关信息,检查依赖性并自动提示用户解决.yum的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http或ftp站点, 也可以