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

來源:互聯網
上載者:User

標籤:http   os   檔案   io   for   cti   html   linux   

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. 編寫同步指令碼,根據需求進行自動同步

  [[email protected] 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

  [[email protected] 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

  [[email protected] 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的設定檔,指向本地源所在的伺服器,注意目錄

  [[email protected] 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

  [[email protected] 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

  [[email protected] 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是否完整

  [[email protected] ~]# 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源是否可行

  #情況緩衝

  [[email protected] ~]# yum clean all

  Loaded plugins: fastestmirror

  Cleaning up Everything

  #列出可用的倉庫一共有22465的可用包

  [[email protected] ~]# 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標準軟體倉庫

  [[email protected] ~]# 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

  [[email protected] ~]# 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

  [[email protected] ~]# 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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.