CentOS 5.1 で、ローカル環境向け yum リポジトリサーバを作ってみる

大人の事情で、仕方なく CentOS を使うハメになりイロイロ勉強中。Linux なんて触りたくないなぁ(w;

apache のインストール

リポジトリを HTTP で配布する事にしたので、apache を入れてみる。

$ yum -y install httpd

適当に httpd.conf を設定して起動しておく。

リポジトリ用のディレクトリを作る

今回は、os と updates だけ対象とする。(addons、extras、centosplus 等は大人の事情で除外)
i386x86_64 環境が混在しているので、両方のディレクトリを準備。

$ mkdir -p /var/www/html/yum/centos/5.1/os/i386/CentOS
$ mkdir -p /var/www/html/yum/centos/5.1/os/x86_64/CentOS
$ mkdir -p /var/www/html/yum/centos/5.1/updates/i386/RPMS
$ mkdir -p /var/www/html/yum/centos/5.1/updates/x86_64/RPMS

RPM ファイルを配置する

rsync://ftp.riken.jp/Linux/centos/ 等から取得して、先ほど作ったディレクトリに配置する。
yum コマンドは、mirrorlist.centos.org が返すリポジトリサーバの一覧から使うサーバを選択しているので、http://mirrorlist.centos.org/?release=5&arch=x86_64&repo=os とかで取得した URI から RPM をダウンロードしても良い。

メタデータを生成する

メタデータとは、レポジトリを管理するための情報の事。
まずは、メタデータを生成する為のコマンド createrepo をインストールする。

$ sudo yum install createrepo

次に、メタデータを生成する。

$ cd /var/www/html/yum/centos/5.1/os/i386/
$ createrepo $PWD

これを各ディレクトリで行う。
RPM を更新する度に、createrepo を実行する必要がある。

ミラーリストを配置する

直接、レポジトリサーバを参照させても良いのだけれど、何となくミラーリストを配置してみる。
CGI を作るのは面倒なので、[version]-[repo]-[basearch].txt という形式のファイル名にする。

$ cat /var/www/html/yum/centos/5.1-os-i386.txt
http://yum.foo.jp/yum/centos/5.1/os/i386/

このようなファイルを各リポジトリ毎に準備する。

試してみる

/etc/yum.repos.d/CentOS-Base.repo を下記のように修正する。

$ diff CentOS-Base.repo.org CentOS-Base.repo
16,17c16
< mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
< #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
---
> mirrorlist=http://yum.foo.jp/yum/centos/$releasever-os-$basearch.txt
19c18
< gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
---
> gpgkey=http://yum.foo.jp/yum/centos/RPM-GPG-KEY-CentOS-5
24,25c23
< mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
< #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
---
> mirrorlist=http://yum.foo.jp/yum/centos/$releasever-updates-$basearch.txt
27c25
< gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
---
> gpgkey=http://yum.foo.jp/yum/centos/RPM-GPG-KEY-CentOS-5

RPM-GPG-KEY-CentOS-5 は、/etc/pki/rpm-gpg/ からコピーしておく。

以上で、yum コマンドは yum.foo.jp から RPM ファイルを取得するようになる。
始めに「yum list available」を実行しておいた方が良いのかな?