概要
RPMベースのディストリビューションでは、YUM(Yellowdog Updater Modified)が依存関係を自動解決しながらパッケージをインストール・更新する標準的な仕組みである。本記事では、オフライン環境でも使えるローカルリポジトリをCentOS 7に構築し、クライアントから利用する手順を解説する。
リポジトリの提供方式
- file:// … ISOイメージやローカルディレクトリを直接参照
- ftp:// … vsftpd などのFTPサーバ経由で配布
- http:// / https:// … Apache/Nginx などのWebサーバ経由で配布
事前準備
- OSインストールメディア(DVD ISO)をマウント
- 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.xml…createrepoが未実行、またはパス誤りvsftpd: 550 Failed to change directory… SELinux またはディレクトリパーミッションを確認ftp: connect: No route to host… ファイアウォールで許可、ルーティング確認
以上で、オフラインにも対応したローカルYUMリポジトリの構築と運用が可能になる。