LoginSignup
7
16

More than 5 years have passed since last update.

RHEL のリポジトリのローカルミラーを作成

Last updated at Posted at 2018-06-18

NW 構成などが原因で、RHEL のリポジトリに接続できるホストが限られていて yum コマンドが出来ないホストが存在する場合がある。
そのような場合、接続可能なホスト上に RHEL のリポジトリのミラーを作成し、接続不可能なホストはミラーを参照することで yum コマンドを実行できるようになる。

前提条件

接続可能なホストをホスト1、接続不可能なホストをホスト2とする。
ホスト1については、RHEL7 で Red Hat Subscription Manager によるシステム登録、サブスクライブが完了し yum ができる状態となっていることとする。

また、本手順では RHEL7 の通常のリポジトリとなる「rhel-7-server-rpms」のミラーを作成する。
同一ホストで異なる OS のリポジトリのミラーは作成できないので RHEL6 のリポジトリのミラーを作成する場合は別途ホストを用意すること。

1.パッケージのインストール (ホスト1の作業)

$ yum install yum-utils createrepo httpd

2.リポジトリのコピー (ホスト1の作業)

$ reposync --downloadcomps --download-metadata --newest-only -a x86_64 -r rhel-7-server-rpms -d -p /var/repos/

No Presto metadata available for rhel-7-server-rpms
(1/5285): 389-ds-base-libs-1.3.7.5-21.el7_5.x86_64.rpm                                      | 696 kB  00:00:01
(2/5285): 389-ds-base-1.3.7.5-21.el7_5.x86_64.rpm                                           | 1.7 MB  00:00:02
::
(5284/5285): zziplib-0.13.62-5.el7.x86_64.rpm                                               |  81 kB  00:00:00
(5285/5285): zsh-5.0.2-28.el7.x86_64.rpm                                                    | 2.4 MB  00:00:04
You have new mail in /var/spool/mail/root
$ 
※--newest-only オプションで各パッケージの最新 ver のみコピー

3.メタデータの作成のコピー (ホスト1の作業)

$ createrepo -s sha256 --checkts --update --workers=2 -g /var/repos/rhel-7-server-rpms/comps.xml /var/repos/rhel-7-server-rpms
Could not find valid repo at: /var/repos/rhel-7-server-rpms
Spawning worker 0 with 2643 pkgs
Spawning worker 1 with 2642 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
$ 
$ modifyrepo /var/repos/rhel-7-server-rpms/productid /var/repos/rhel-7-server-rpms/repodata/
Wrote: /var/repos/rhel-7-server-rpms/repodata/productid.gz
           type = productid
       location = repodata/…-productid.gz
       checksum = …
      timestamp = …
  open-checksum = …
Wrote: /var/repos/rhel-7-server-rpms/repodata/repomd.xml
$ 
$ cd /var/repos/rhel-7-server-rpms
$ gunzip -c $(ls -t *updateinfo.xml.gz) > updateinfo.xml
$ modifyrepo /var/repos/rhel-7-server-rpms/updateinfo.xml /var/repos/rhel-7-server-rpms/repodata/
Wrote: /var/repos/rhel-7-server-rpms/repodata/updateinfo.xml.gz
           type = updateinfo
       location = repodata/…-updateinfo.xml.gz
       checksum = …
      timestamp = …
  open-checksum = …
Wrote: /var/repos/rhel-7-server-rpms/repodata/repomd.xml

4.HTTP の設定 (ホスト1の作業)

$ vi /etc/httpd/conf.d/repos.conf
<Directory /var/repos>
  Options Indexes FollowSymLinks
  AllowOverride None
  <IfModule mod_authz_core.c>
    Require all granted
  </IfModule>
  <IfModule !mod_authz_core.c>
    Order allow,deny
    Allow from all
  </IfModule>
</Directory>
Alias /repos /var/repos
$ systemctl restart httpd

5.クライアントの yum 設定 (ホスト2の作業)

$ vi /etc/yum.repos.d/test.repo
[local-myrepository]
name=My repository
baseurl=http://<ホスト1の IP アドレス>/repos/rhel-7-server-rpms
gpgcheck=0
enabled=1

参考情報

How to synchronize repository on system registered to CDN via subscription-manager
https://access.redhat.com/articles/1355053

How to create a local mirror of the latest update for Red Hat Enterprise Linux 5, 6, 7 without using Satellite server?
https://access.redhat.com/solutions/23016

How to create a local repository for updates
https://access.redhat.com/solutions/9892

7
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
16