CentOS の RPM リポジトリのミラーサーバを構築する

提供:maruko2 Note.
移動: 案内, 検索

CentOS をネットワークインストールする時やアップデートする時、CentOS のミラーサーバを利用するが、 何台も&何度もセットアップとなるとインターネットの帯域を圧迫するし public なミラーサーバに申し訳なくなってしまう。

そこで、ローカルに private なミラーサーバを構築することで、快適にセットアップできるようにする。

  • 単に RPM リポジトリのミラーサーバにするだけなら Web サーバと rsync さえ使えれば OS は何でも良い。(CentOS 以外でも可)
  • 独自に作成した RPM のリポジトリ用サーバを構築するには createrepo コマンドを使うので CentOS をサーバにすると楽に構築できる。

目次

ミラーサーバの構築

公式サイトには ミラーサーバについての HowTo が紹介されているが、必要な部分だけミラーしたいので次のように設定する。

CentOS にはいくつかのリポジトリがある(/etc/yum.repos.d/CentOS-Base.repo)が、そのうち base と update だけ利用する。

手順

ミラーするディレクトリを用意し、rsync コマンドでミラーする。この3行のコマンドでは、CentOS 5.x i386 版の os と update だけミラーできる。

mkdir -p /var/www/html/centos/5/{os,updates}/i386
rsync -rptv --delete rsync://ftp.riken.jp/centos/5/os/i386/ /var/www/html/centos/5/os/i386/
rsync -rptv --delete rsync://ftp.riken.jp/centos/5/updates/i386/ /var/www/html/centos/5/updates/i386

Web サーバの設定

/etc/httpd/conf.d/centos-mirror.conf を作成。

<directory "/var/www/html/centos">
  options +indexes
</directory>

cron で定期的にミラーする

次のようなシェルスクリプトを定期的に(1日1回くらい)実行し、public なミラーサーバと同期させる。

#!/bin/sh
releasever="4 5"
basearch="i386 x86_64"
repos="os updates"
localdir="/var/www/html/centos"
rsync="rsync -rptq --delete"
 
for release in $releasever ; do
  for arch in $basearch ; do
    for repo in $repos ; do
      src="rsync://ftp.riken.jp/centos/$release/$repo/$arch/"
      dest="$localdir/$release/$repo/$arch"
      if [ -d $dest ] ; then
        $rsync $src $dest
      else
        mkdir -p $dest
        $rsync $src $dest
      fi
    done
  done
done

CentOS 5 i386/x86_64 の os と updates のみミラーするのに必要なディスク容量は 約9.1GB

yum コマンドで利用できるようにする

yum コマンドは /etc/yum.repos.d/CentOS-Base.repo に記述されている mirrorlist を元にリポジトリサーバを決定している[1]ので、自前のリポジトリサーバを使うようにするには mirrorlist を使わないようにし、baseurl に自前のリポジトリサーバを記述しておく。

/etc/yum.repos.d/CentOS-Base.repo の [base] と [update] にある mirrorlist の行をコメントアウトし、新たに baseurl の行を追加する。

[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=http://構築したミラーサーバのアドレス/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
 
[update]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
baseurl=http://構築したミラーサーバのアドレス/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

脚注

  1. yum-plugin-fastestmirror を参照

参考ページ

LINEで送る このエントリーをはてなブックマークに追加
個人用ツール
名前空間
変種
表示
操作
案内
ツールボックス

注目のページ

このサイトのはてなブックマーク数