Fedora 8 にローカル Yum リポジトリを構築する方法
バージョンと著者
Version 1.0
Author: Falko Timme
概要
このチュートリアルでは、同一ローカルネットワーク上の複数台に Fedora 8 をインストールする際に便利な、ローカル yum リポジトリ(ミラー)を作成する手順を示します。ローカル LAN 経由でパッケージを配布するため、インターネット帯域の節約と高速なパッケージインストールが可能になります。動作を保証するものではありません。環境に合わせてホスト名やパスは調整してください。
重要: 以下の例ではホスト名を server1.example.com、IP を 192.168.0.100、Apache のドキュメントルートを /var/www/html としています。適宜置き換えてください。
目次
- 前提事項
- Apache のインストール
- リポジトリの作成手順(パッケージ取得、createrepo 実行)
- 自動更新(rsync + cron)
- クライアント側の設定
- 役割別チェックリスト
- トラブルシューティングと注意点
- 参考リンク
1 前提事項
このガイドは Fedora 8 を対象としています。別バージョン(Fedora 7/6 や x86_64)を使う場合はディレクトリ名やパスを適宜変更してください。
用語(1行定義):
- yum リポジトリ: RPM パッケージを配布するメタデータとパッケージ本体の集合。
- createrepo: 指定ディレクトリに repodata を作成するツール。
- rsync: リモートミラーから効率的にファイル同期するツール。
重要: この例では HTTP 経由で配布するため Apache を使用します。他の配布方法(FTP、NFS)でも可能です。
2 Apache のインストール
まず Apache をインストールします。
yum install httpd
システム起動時に自動で Apache を開始するように設定します。
chkconfig --levels 235 httpd on
Apache を起動します。
/etc/init.d/httpd start
注: 別の仮想ホストを使っている場合はドキュメントルートや設定を調整してください。デフォルトは /var/www/html です。
3 リポジトリの構築
3.1 createrepo のインストール
yum install createrepo
3.2 ディレクトリ構成の作成
この例では i386 用のパッケージを次の場所に配置します。
- ベース: /var/www/html/yum/base/8/i386
- アップデート: /var/www/html/yum/updates/8/i386
mkdir -p /var/www/html/yum/base/8/i386
mkdir -p /var/www/html/yum/updates/8/i386
3.3 パッケージの取得方法(DVD からコピー)
最も手軽なのは Fedora 8 の DVD を挿入して Packages ディレクトリをコピーする方法です。ミラーはこちら: http://mirrors.fedoraproject.org/mirrorlists/publiclist/Fedora/8
mount /dev/cdrom /mnt
cd /mnt/Packages
cp -v * /var/www/html/yum/base/8/i386
cd /
umount /mnt
DVD は最小限のパッケージ群しか含まないため、フルセットが必要なら次の rsync 例を参照してください。
3.4 パッケージの取得方法(rsync で Everything を同期)
ミラーの Everything フォルダから rsync で取得すると、利用可能なすべてのパッケージをダウンロードできます。ミラーサイトで rsync を提供しているか確認してから実行してください。完了まで時間がかかることがあります。
rsync -avrt rsync://ftp-stud.hs-esslingen.de/fedora/linux/releases/8/Everything/i386/os/Packages/ /var/www/html/yum/base/8/i386
注意: コマンド末尾のスラッシュの有無で挙動が変わるため、上記のように正確に指定してください。
3.5 createrepo の実行
パッケージをコピーしたら、メタデータを作成します。
createrepo /var/www/html/yum/base/8/i386
実行後、repodata ディレクトリが作成されます。例:
ls -l /var/www/html/yum/base/8/i386/repodata/
[root@server1 /]# ls -l /var/www/html/yum/base/8/i386/repodata/
total 9268
-rw-r--r-- 1 root root 2227275 2007-12-18 21:11 filelists.xml.gz
-rw-r--r-- 1 root root 6487453 2007-12-18 21:11 other.xml.gz
-rw-r--r-- 1 root root 747714 2007-12-18 21:11 primary.xml.gz
-rw-r--r-- 1 root root 951 2007-12-18 21:11 repomd.xml
[root@server1 /]#
3.6 アップデートパッケージの取得
アップデートは別ディレクトリに保存しておくと管理が容易です。rsync で updates を同期します。
rsync -avrt rsync://ftp-stud.hs-esslingen.de/fedora/linux/updates/8/i386/ --exclude=debug/ /var/www/html/yum/updates/8/i386
4 自動更新(cron による同期)
最新のアップデートを定期的に取得するなら cron を使います。例えば隔日(2日おき)の 04:23 に同期する場合:
crontab -e
| 23 4 */2 * * /usr/bin/rsync -avrt rsync://ftp-stud.hs-esslingen.de/fedora/linux/updates/8/i386/ --exclude=debug/ /var/www/html/yum/updates/8/i386
|
cron の書き方や rsync のパスは環境に合わせて変更してください。
5 クライアントの設定
各 Fedora 8 クライアントで /etc/yum.conf を編集してローカルリポジトリを使うようにします。ミラー上でも同様に設定できます。
vi /etc/yum.conf
まず次の行を探します。
| # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d
|
この下に以下のリポジトリ設定を追加してください(IP は例です)。
| [base-local] name=Fedora $releasever - $basearch failovermethod=priority baseurl=http://192.168.0.100/yum/base/$releasever/$basearch #mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch enabled=1 gpgcheck=0 [updates-local] name=Fedora $releasever - $basearch - Updates failovermethod=priority baseurl=http://192.168.0.100/yum/updates/$releasever/$basearch/ #mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f$releasever&arch=$basearch enabled=1 gpgcheck=0
|
最終的な /etc/yum.conf の例:
| [main] cachedir=/var/cache/yum keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 metadata_expire=1800 installonly_limit=2 # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d [base-local] name=Fedora $releasever - $basearch failovermethod=priority baseurl=http://192.168.0.100/yum/base/$releasever/$basearch #mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch enabled=1 gpgcheck=0 [updates-local] name=Fedora $releasever - $basearch - Updates failovermethod=priority baseurl=http://192.168.0.100/yum/updates/$releasever/$basearch/ #mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f$releasever&arch=$basearch enabled=1 gpgcheck=0
|
これでクライアントがローカルリポジトリからパッケージを取得できるようになります。gpgcheck を有効にする場合は公開鍵の配布と署名確認の手順を別途実施してください。
6 役割別チェックリスト
- 管理者(ミラー構築):
- Apache をインストール/起動
- /var/www/html/yum 配下のディレクトリを作成
- パッケージを DVD または rsync で取得
- createrepo を実行して repodata を生成
- rsync を使った定期同期を cron で設定
- ファイアウォールが HTTP(ポート 80)を許可していることを確認
- クライアント管理者:
- /etc/yum.conf に baseurl を追加
- yum update を実行して動作確認
- 必要に応じて gpgcheck の設定を調整
- ネットワーク管理者:
- ミラーサーバーのホスト名と IP を DNS に登録
- LAN 上で 192.168.0.100 が到達可能か確認
7 ミニ手順(チェックリスト順)
- Apache をインストールして起動する。
- createrepo をインストールする。
- /var/www/html/yum/base/8/i386 と /var/www/html/yum/updates/8/i386 を作成。
- DVD または rsync でパッケージを配置する。
- createrepo を実行して repodata を作成。
- クライアントの /etc/yum.conf を更新。
- 必要なら cron で自動同期を設定。
8 トラブルシューティングと注意点
- パーミッション: Apache がファイルを読み取れること(通常は world-readable)。必要に応じて所有者とパーミッションを確認。
- SELinux: SELinux が有効な場合、/var/www/html 以下に配置したファイルに対して httpd がアクセスできるようコンテキストを設定する必要があります(restorecon/chcon を使用)。
- rsync ミラー先選定: ミラーによっては rsync を提供していない場合があります。publiclist で rsync サポートの有無を確認してください。
- ネットワーク負荷: 初回の rsync は大容量になるため、夜間などの時間帯を選んで実行すると良いです。
- gpgcheck を 0 にしている点: 本ガイドでは簡便化のため gpgcheck=0 としています。本番環境では署名検証を有効にすることを推奨します。
いつうまくいかないか(反例):
- リポジトリの baseurl を間違っていると yum がリポジトリを認識しません。URL と末尾のスラッシュに注意。
- repodata が欠損していると yum がパッケージを検出できません。createrepo を再実行してください。
9 簡易フローチャート
flowchart TD
A[リポジトリ構築開始] --> B{パッケージ入手方法}
B -- DVD --> C[DVD をマウントしてコピー]
B -- rsync --> D[rsync で Everything を同期]
C --> E[createrepo 実行]
D --> E
E --> F[Apache で公開]
F --> G[クライアント設定 '/etc/yum.conf']
G --> H[yum update 実行]
H --> I{成功?}
I -- Yes --> J[運用開始]
I -- No --> K[ログ確認・repodata 再生成]
10 受け入れ基準
- クライアントから http://192.168.0.100/yum/base/8/i386/ にアクセスできること
- /var/www/html/yum/base/8/i386/repodata/ に repomd.xml が存在すること
- yum install でローカルリポジトリからパッケージが取得できること
11 互換性と移行メモ
- Fedora 8 は古いリリースです。別バージョン(例: x86_64)の場合はディレクトリ名(i386 → x86_64)やパスを変更してください。
- 将来的に新しい Fedora バージョンへ移行する場合は、ミラー元の rsync パスを共同で更新し、クライアントの $releasever に応じたディレクトリ構造を用意する必要があります。
12 参考リンク
- Fedora: http://fedoraproject.org
まとめ
- Apache と createrepo、rsync を組み合わせればローカル yum ミラーを構築できます。
- cron で定期的に同期しておけば更新運用が楽になります。
- gpgcheck や SELinux などのセキュリティ設定は運用ポリシーに合わせて調整してください。
重要: 本手順は環境に依存します。IP、ホスト名、パスは自分のネットワークに合わせて変更してください。