前篇提到了如何使用 yum 更新 Linux 內的套件,本篇筆記主要
記載該如何在內部架設 yum伺服器,提供內部多台伺服器套件更
新,步驟相當簡單易懂。老話一句:「別不相信被入侵的可能」



這次我們將透過 mirrordir好用的套件,進行mirror站台的資料
傳輸,這個套件也適用於資料夾的同步更新,且每次採差異性更
新機制,有更新才執行 mirror 的動作!大概只有第一次mirror
站台會耗上大筆時間與頻寬,剩下的就交給系統例行性更新工作
囉!

以下筆記按照四個分類步驟:前置作業、Server端設定、排程新
增、client端指向內部yum server。此次使用的平台為CentOS 5
,mirror CentOS 4.5 i386的套件,主要在於建立 RHEL 4 能更
新套件的環境,由於 CentOS 5 有許多套件並未安裝,所以事前
請先下載一些需要的套件,方便之後環境建置使用。


mirrordir ‧ http://dag.wieers.com/rpm/packages/mirrordir/

首先請您先至 mirrordir下載您作業系統適合的版本,有i386、
x86_64、RedHat EL、Fedora Core之類的差別,當然也支援早期
Linux 的版本,就請您按照需求下載所需的 rpm 回來安裝吧!


【前置作業】

§ 下載、安裝 mirrordir 套件:

# wget http://dag.wieers.com/rpm/packages/mirrordir/mirrordir-0.10.49-1.2.el4.rf.i386.rpm
# rpm -ivh mirrordir-0.10.49-1.2.el4.rf.i386.rpm

§ 下載、安裝 yum-arch 套件 (自動產生 headers 資料夾;CentOS 5 並無內建):

# wget ftp://rpmfind.net/linux/fedora/development/i386/os/Packages/yum-arch-2.2.2-2.fc7.noarch.rpm
# rpm -ivh yum-arch-2.2.2-2.fc7.noarch.rpm

§ 下載、安裝 createrepo 套件 (建立索引檔用):

# yum install createrepo

§ 設定 httpd 伺服器,由於內部伺服器使用,即使用系統內建 httpd 套件。



【yum server 設定】

§ 建立欲放置 rpm 位置 (僅 mirror i386 的部分)

# mkdir /var/www/html/yum/centos/4/os/i386
# mkdir /var/www/html/yum/centos/4/updates/i386
# mkdir /var/www/html/yum/centos/4/extras/i386

§ 針對目錄 mirror yum Server 更新套件 (台南縣教育網路中心 FTP)

# mirrordir -v ftp://ftp2.tnc.edu.tw/pub1/centos/4/os/i386 /var/www/html/yum/centos/4/os/i386
# mirrordir -v ftp://ftp2.tnc.edu.tw/pub1/centos/4/updates/i386 /var/www/html/yum/centos/4/updates/i386
# mirrordir -v ftp://ftp2.tnc.edu.tw/pub1/centos/4/extras/i386 /var/www/html/yum/centos/4/extras/i386

§ RPM分析,會在目錄下產生 heaers 資料夾

# yum-arch /var/www/html/yum/centos/4/os/i386
# yum-arch /var/www/html/yum/centos/4/updates/i386
# yum-arch /var/www/html/yum/centos/4/extras/i386

§ createrepo 套件產生 XML metadata,會在目錄下產生 repodata 資料夾

# createrepo /var/www/html/yum/centos/4/os/i386
# createrepo /var/www/html/yum/centos/4/updates/i386
# createrepo /var/www/html/yum/centos/4/extras/i386



【yum server 自動更新排程設定】

§ 新增一筆更新排程

# vim /etc/crontab

 30 1 * * * root /root/yummirror.sh

§ 建立批次執行列表

# vim /root/yummirror.sh

 #!/bin/bash

 mirrordir ftp://ftp2.tnc.edu.tw/pub1/centos/4/os/i386 /var/www/html/yum/centos/4/os/i386
 mirrordir ftp://ftp2.tnc.edu.tw/pub1/centos/4/updates/i386 /var/www/html/yum/centos/4/updates/i386
 mirrordir ftp://ftp2.tnc.edu.tw/pub1/centos/4/extras/i386 /var/www/html/yum/centos/4/extras/i386
 yum-arch /var/www/html/yum/centos/4/os/i386
 yum-arch /var/www/html/yum/centos/4/updates/i386
 yum-arch /var/www/html/yum/centos/4/extras/i386
 createrepo /var/www/html/yum/centos/4/os/i386
 createrepo /var/www/html/yum/centos/4/updates/i386
 createrepo /var/www/html/yum/centos/4/extras/i386

# chmod 700 /root/yummirror.sh


上面批次執行應該這樣就可行,剩下就丟給系統去跑囉!假如想
要再完善一點,倒是可以先寫個小的檢查程式,先檢查網路有沒
有連線,再執行以上批次列表,在這稍微做個筆記,以後有空再
研究。



【client 設定】

§ 備份、更改 yum list 設定檔

# cd /etc/yum.repos.d
# cp CentOS-Base.repo CentOS-Base.repo.old
# vim CentOS-Base.repo

 [base]
 name=CentOS-$releasever - Base
 #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
 baseurl=http://yourdomain/yum/centos/4/os/i386
 gpgcheck=1
 gpgkey=http://yourdomain/yum/centos/4/os/i386/RPM-GPG-KEY-centos4

 #released updates
 [updates]
 name=CentOS-$releasever - Updates
 #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
 baseurl=http://yourdomain/yum/centos/4/updates/i386
 gpgcheck=1
 gpgkey=http://yourdomain/yum/centos/4/updates/i386/RPM-GPG-KEY-centos4

 #additional packages that may be useful
 [extras]
 name=CentOS-$releasever - Extras
 #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
 baseurl=http://yourdomain/yum/centos/4/extras/i386
 gpgcheck=1
 gpgkey=http://yourdomain/yum/centos/4/extras/i386/RPM-GPG-KEY-centos4


※ 前面提到的http://yourdomain,指的是伺服器的 DomainName / IP。



這篇筆記是目前工作先行測試的部分,至於要不要透過這樣的服
務更新RHEL穩定的服務,這點倒是有待商確,畢竟整個架構透過
CentOS更新,會不會發生某些奇怪的問題,這點仍不敢保證。不
過?對於那些公司內部多台需要更新套件又不能上網的伺服器來
說,倒是對管理人員來說相當的省事。 ^^~


                          Paul

                       2007.11.18
arrow
arrow
    全站熱搜

    paul 發表在 痞客邦 留言(2) 人氣()