CentOS 7向けローカルYUMリポジトリの構築と運用ガイド

概要

RPMベースのディストリビューションでは、YUM(Yellowdog Updater Modified)が依存関係を自動解決しながらパッケージをインストール・更新する標準的な仕組みである。本記事では、オフライン環境でも使えるローカルリポジトリをCentOS 7に構築し、クライアントから利用する手順を解説する。

リポジトリの提供方式

  • file:// … ISOイメージやローカルディレクトリを直接参照
  • ftp:// … vsftpd などのFTPサーバ経由で配布
  • http:// / https:// … Apache/Nginx などのWebサーバ経由で配布

事前準備

  1. OSインストールメディア(DVD ISO)をマウント
  2. SELinuxを無効化、ファイアウォールを停止(検証環境向け)
# systemctl stop firewalld
# setenforce 0
# mount /dev/sr0 /mnt

ステップ1 FTPリポジトリホストのセットアップ

vsftpd を使い、/var/ftp/centos7 以下にパッケージを集約する。

# yum -y install vsftpd
# systemctl enable --now vsftpd
# mkdir -p /var/ftp/centos7
# cp -a /mnt/Packages/* /var/ftp/centos7/

ステップ2 メタデータの生成

createrepo コマンドでリポジトリ情報を作成する。

# yum -y install createrepo
# createrepo --database /var/ftp/centos7

完了すると repodata/ ディレクトリが生成され、repomd.xml などのインデックスファイルが格納される。

ステップ3 クライアント側の設定

/etc/yum.repos.d/local.repo を新規作成し、以下の内容を記述する。

[centos7-local]
name=CentOS7 Local Repository
baseurl=ftp://<リポジトリホストIP>/centos7
enabled=1
gpgcheck=0

その後、キャッシュを更新して有効化する。

# yum clean all
# yum makecache

動作確認

# yum --disablerepo="*" --enablerepo="centos7-local" list available | head
# yum -y install htop

高速ミラーの活用

インターネットに接続できる環境では、公式リポジトリを国内ミラーに置き換えることで速度を改善できる。

# curl -o /etc/yum.repos.d/CentOS-Base.repo \
  https://mirrors.aliyun.com/repo/Centos-7.repo

パッケージの取得モード

用途コマンド例
インストール+RPM保存yum install -y --downloadonly --downloaddir=/tmp/rpms nginx
依存関係も含めて取得yumdownloader --resolve --destdir=/tmp/rpms nginx
キャッシュのみ利用sed -i 's/keepcache=0/keepcache=1/' /etc/yum.conf

トラブルシューティング

  • Cannot find repomd.xmlcreaterepo が未実行、またはパス誤り
  • vsftpd: 550 Failed to change directory … SELinux またはディレクトリパーミッションを確認
  • ftp: connect: No route to host … ファイアウォールで許可、ルーティング確認

以上で、オフラインにも対応したローカルYUMリポジトリの構築と運用が可能になる。

タグ: centos7 Yum vsftpd createrepo RPM

7月15日 21:06 投稿