接続が切断されている環境内にある Linux コンピュータへのパッチ適用の方法

接続が切断されている環境内に Linux クライアント コンピュータがある場合、エージェントは YUM を使用して RPM パッケージをインターネットからダウンロードすることはできません。 代わりに管理者が次のことを行う必要があります。

  • 使用可能な RPM のライブラリ全体を含んだローカルの「オンプレミス」リポジトリを1つ以上設定して、データを取り込む
  • 見つからない RPM を、インターネットではなく、正しいローカル リポジトリから探すように、クライアント コンピュータ群を構成する

以下の情報は、ローカル リポジトリを設定して使用するための、一般的なガイドラインです。具体的な質問や問題がある場合は、お使いの Linux オペレーティング システムのベンダにお問い合わせください。

ローカル リポジトリの設定方法

要件

サポートされている Linux サーバ コンピュータであればどれでも、ローカル リポジトリとして使用できます。唯一の要件は、使用可能な RPM パッケージのインベントリ全体を収容できるだけの十分な空きディスク領域があることです。 RPM パッケージが含まれるパブリック リポジトリには、さまざまなものがあります。たとえば、RHEL 9 RPM 用のパブリック リポジトリ、RHEL 8 RPM 用のパブリック リポジトリなど、さまざまです。一般的なルールとして、ローカル リポジトリ コンピュータには、ダウンロードするパブリック リポジトリごとに最低100GB のディスク領域が必要です。

このプロセスでは、おそらく2台以上の Linux サーバ コンピュータが必要になります。

  • シナリオ1: 1台のコンピュータを、各種バージョンの全 RPM 用のローカル リポジトリとして使用することを選ぶ場合があります。このシナリオでは、リポジトリとして使用するコンピュータで、リポジトリ コンピュータで使用されている Linux ディストリビューションと同じバージョンの RPM をダウンロードできます。ただし、組織で使用している各 Linux ディストリビューションのさまざまなバージョンごとに、RPM をダウンロードするためのコンピュータが、それぞれ個別に必要です。
  • たとえば、組織に RHEL 9 x64、RHEL 8 x64、および CentOS 7 x64のクライアント コンピュータがある場合、RHEL 9 x64サーバ コンピュータをローカル リポジトリとして使用し、このサーバ コンピュータを使用して RHEL 9系のサーバ、ワークステーション、デスクトップなどのためのすべての RPM をダウンロードできます。RHEL 8系と CentOS 系のサーバ、ワークステーション、デスクトップなどのための RPM はすべて、別の RHEL 8 x64コンピュータと CentOS 7 x64コンピュータを使用してダウンロードします。それらの RPM をローカル リポジトリ コンピュータに転送することになります。

  • シナリオ2: 3種類のローカル リポジトリを用意し、1つはすべての RHEL 9 RPM 用、もう1つはすべての RHEL 8 RPM 用、さらにもう1つはすべての CentOS 7 RPM 用として維持することを選ぶ場合があります。このシナリオでは、リポジトリとして稼働させる3台の専用コンピュータが必要ですが、追加の転送ステップや、結合リポジトリを維持する煩わしさはありません。

構成プロセス

使用可能な RPM パッケージのライブラリ全体をローカル リポジトリにダウンロードするには数時間を要する可能性が高いため、2段階に分けて構成プロセスを行うことを推奨します。第1段階 (使用可能な全 RPM をダウンロードする) を、ダウンロード プロセスを一晩かけて行えるように、就業日の最後に実行します。 こうすることで、第2段階を次の日に行えます。

以下のコマンドを実行するには、root 権限が必要です。

第1段階

  1. リポジトリとして使用するディレクトリを作成します。
    たとえば、次のコマンドを実行すると、Red Hat 9 RPM を入れるために使用するディレクトリが作成されます。
  2. mkdir -p /repos/redhat/9

  3. ローカル リポジトリへのデータ取り込みに使用できるパブリック リポジトリのリストを表示します。
    使用できるパブリック リポジトリは、RHEL サブスクリプションに基づきます。
  4. yum repolist

  5. YUM を使用して、reposync が含まれたパッケージをインストールします。
  6. yum install yum-utils

  7. 選択したパブリック リポジトリから、使用可能なすべてのパッケージをダウンロードします。
    たとえば、次のコマンドを実行すると、rhel-9-for-x86_64-baseos-rpms パブリック リポジトリから RPM がダウンロードされます。
  8. reposync --gpgcheck -l --repoid=rhel-9-for-x86_64-baseos-rpms --download_path=/repos/redhat/9

    ダウンロード プロセスには長時間かかりますので、計画的に行ってください。 -gpgcheck オプションを付けると、ダウンロード プロセス中に署名チェックに不合格となったパッケージが除かれます。

  9. 必要なパブリック リポジトリのバリアントごとに手順3を繰り返します。
  10. たとえば、Intel と ARM の両方に RHEL 9が含まれている組織の場合、 関連付けられた両方のパブリック リポジトリから RPM をダウンロードする必要があります。こうした必要なダウンロードをすべて実行するには、数日を要する場合もあります。

    別のバージョンの Red Hat や CentOS 用の RPM のダウンロードは試行しないでください。 たとえば、RHEL 9コンピュータを使用して RHEL 8 x64コンピュータや RHEL 7 x64コンピュータ用の RPM をダウンロードすることはできません。

第2段階

ここで説明するプロセスを行うと、HTTP 経由でアクセス可能なリポジトリが作成されます。リポジトリを作成する際に使用できる方法はほかにもあります。最も精通している方法を使用してかまいません。

  1. YUM を使用して、リポジトリを作成する機能を提供するプログラムをインストールします。
  2. yum install createrepo

  3. リポジトリを作成します。
  4. createrepo /repos/redhat/9

    *.rpm ファイルを開けないというエラーが表示された場合は、ディスク領域に空きがあるか確認してください。 空き領域の問題でないなら、ダウンロード手順 (第1段階の手順3) を繰り返します。 初回ダウンロード実行時に、いくつかのファイルが欠落していた可能性があります。

  5. Apache Web サービスをインストールします。
    これにより、HTTP プロトコルを使用してローカル リポジトリにアクセスできるようになります。
  6. yum install httpd

  7. ローカル ファイア ウォールのポート80を開きます。
    これは、HTTP を使用するように、このリポジトリを設定するためです。HTTPS でもかまいませんが、ここでは例を簡素化するために HTTP を使用します。
  8. httpd.conf ファイルを編集して、次のエントリの中で欠落しているものがあれば追加します。
  9. vi /etc/httpd/conf/httpd.conf

     

    ServerAdmin root@localhost

    DocumentRoot /var/www/html

    ServerName <machinename>

  10. 新しいリポジトリを既定の Web サイトの場所にリンクします。
  11. ln -s /repos/redhat /var/www/html/redhat

  12. Apache Web サービスの構文を検証します。
  13. httpd -t

  14. Apache Web サービスを開始します。
  15. systemctl start httpd

    サーバが再起動されるたびにこのコマンドを繰り返す必要がある場合があります。 サーバが再起動されるたびに自動的にサービスが開始されるようにするには、次のコマンドを使用できます。
    systemctl enable httpd.

  16. updateinfo.xml.gz zip ファイルを入手します。
  17. ステップ9~13は、Red Hat コンピュータのみに適用されます。

    yum list-sec

  18. *updateinfo.xml.gz ファイルを既定の場所から /repodata フォルダにコピーします。
  19. cp /var/cache/yum/x86_64/9rhServer/rhel-9-for-x86_64-baseos-rpms/*updateinfo.xml.gz /repos/redhat/9/repodata/

  20. *updateinfo.xml.gz ファイルを解凍します。
  21. gzip -d /repos/redhat/9/repodata/*updateinfo.xml.gz

  22. *updateinfo.xml ファイルを名前変更して、不要な先行文字を削除します。
  23. mv /repos/redhat/9/repodata/*updateinfo.xml /repos/redhat/9/repodata/updateinfo.xml

  24. updateinfo.xml ファイルが含まれていることを肯定するようにリポジトリを変更します。
  25. modifyrepo /repos/redhat/9/repodata/updateinfo.xml /repos/redhat/9/repodata/

  26. (SELinux が有効になっている Red Hat および CentOS 7コンピュータのみに適用されます) /repos/redhat にアクセスするための www/html/redhat への権限を付与します。
  27. cd /var/www/html

    chcon -R -t httpd_sys_content_t redhat/

他の Linux バージョンおよびディストリビューションについても構成プロセスを繰り返す

組織でサポートしている各 Linux ディストリビューションのさまざまなバージョンごとに、構成プロセスの一部またはすべてを繰り返す必要があります。たとえば、RHEL 9 RPM をダウンロードするには RHEL 9コンピュータを、CentOS 7 x64 RPM をダウンロードするには CentOS 7 x64コンピュータを、RHEL 8 x64 RPM をダウンロードするには RHEL 8 x64コンピュータを使用する必要があります。Linux のバージョンごとにコマンドを必要に応じて変更してください。

シナリオ1: 各種すべての Linux バージョン用に1つのリポジトリを使用する場合

リポジトリとして Red Hat 9コンピュータを使用していると仮定して、ここでは、Red Hat 8 RPM を取得する場合に繰り返す必要のある手順を示します。

  1. Red Hat 9リポジトリ コンピュータで、第1段階の手順1を実行します。ただし、ここでは /repos/redhat/8を指定します。
  2. Red Hat 8コンピュータで、第1段階の手順3と4を実行します。
    手順3で、Red Hat 8コンピュータには repos/redhat/9ディレクトリは存在しませんので、-download_path オプションを削除して既定の場所に移動させるか、または別の場所を指定します。
  3. RPM のダウンロードが完了後、ローカル リポジトリ内の repos/redhat/8ディレクトリにそれらの RPM を転送します。
    完了すると、サポートされている全バージョンの Red Hat 用の RPM パッケージが含まれているリポジトリが1つ、1台のコンピュータ上に作成されています。

シナリオ2: 各種 Linux バージョンごとに個別のリポジトリを維持する場合

組織でサポートしている Linux の各種バージョンごとに、構成プロセス全体を繰り返します。

Linux クライアント コンピュータがローカル リポジトリを指すようにする

各 Linux クライアントがインターネットではなくローカル リポジトリを対象に RPM を検索するようにするため、各 Linux クライアント上の YUM を変更する必要があります。

Linux のバージョンごとに別のローカル リポジトリを維持することを選んだ場合は、各クライアントが正しいローカル リポジトリを指すようにします。

  1. クライアント コンピュータにログオンします。
  2. リポジトリの配置場所がリストされるディレクトリに移動します。
  3. cd /etc/yum.repos.d

  4. local.repo という名前のファイルを作成し、新しいローカル リポジトリを指すようにこのファイルを構成します。
  5. nano local.repo

    [mylocalrepo]

    name=Local Rhel9 Server Repo

    baseurl=http://es-nxt-rhel9-repo.example.com/redhat/9

    gpgcheck=0

  6. ローカル リポジトリから見つからない RPM がある場合に、クライアントはインターネット上での検索を試行すべきでない (クライアント コンピュータを切断する) ことを指定します。
  7. ls

    vi any file oter than local.repo (example redhat.repo)

    repoid (例: rhel-9-for-x86_64-baseos-rpms) を探します

    Set enabled = 0

リポジトリの定期メンテナンス

ローカル リポジトリを定期的にパブリック リポジトリと再同期することによって、ローカル リポジトリを最新に保つ必要があります。次のコマンドを実行すると、新しい RPM パッケージのみがローカル リポジトリにダウンロードされます。

reposync -gpgcheck -l -repoid=rhel-9-for-x86_64-baseos-rpms -download_path=/repos/redhat/9

createrepo --update /repos/redhat/9

エアギャップ ネットワーク

組織で「エア ギャップ」ネットワークを維持している場合、つまりどのクライアント コンピュータもインターネットにアクセスできるコンピュータへの接続が許可されない場合は、第2のリポジトリを構成して維持する必要があります。これを次の図に示します。

この場合、接続されているリポジトリを上述のとおりに設定して構成した後、接続が切断されているコンピュータ上に第2のリポジトリを設定してから、リムーバブル メディアを使用して、接続されているリポジトリから接続が切断されているリポジトリにファイルを手動で転送します。その後 Linux クライアント コンピュータを、接続されているリポジトリではなく、接続が切断されているリポジトリを指すように構成する必要があります。

関連情報

https://access.redhat.com/solutions/23016