RHEL9でchkconfigをインストール時のエラーの対処法

## RHEL9でchkconfigをインストールしたいときの対処法

**概要**

この文書は、RHEL9でchkconfigをインストールしようとした際に発生するエラーとその解決策について説明します。

**対象者**

* RHEL9を使用しているユーザー
* chkconfigが必要なユーザー
* コマンド操作に慣れていない初心者

**目次**

1. はじめに
2. エラー内容
3. 原因
4. エラー解決策
    4.1. 既存リポジトリの無効化
    4.2. ネットワーク接続の確認
    4.3. Red Hat サポートページの確認
    4.4. キャッシュの削除
5. 手順の詳細
    5.1. 既存リポジトリの無効化
    5.2. ネットワーク接続の確認
    5.3. キャッシュの削除
6. 補足
    6.1. systemd-sysv-generatorコマンドについて
    6.2. chkconfigとsystemd-sysv-generatorの比較
7. まとめ

**1. はじめに**

RHEL9では、従来のchkconfigコマンドは非推奨となり、**systemd-sysv-generator**コマンドが推奨されています。しかし、一部の環境ではchkconfigが必要となる場合があります。

**2. エラー内容**

chkconfigをインストールしようとすると、以下のエラーが発生する場合があります。

```
[root@localhost yum.repos.d]# dnf install chkconfig
サブスクリプション管理リポジトリーを更新しています。
Red Hat Enterprise Linux 9 for x86_64 - BaseOS  17 kB/s | 4.1 kB  00:00
Red Hat Enterprise Linux 9 for x86_64 - BaseOS 1.6 B/s | 10 B  00:06
Errors during downloading metadata for repository 'rhel-9-for-x86_64-baseos-eus-debug-rpms':
  - Status code: 404 for [https://cdn.redhat.com/content/eus/rhel9/9/x86_64/baseos/debug/repodata/repomd.xml](https://cdn.redhat.com/content/eus/rhel9/9/x86_64/baseos/debug/repodata/repomd.xml) (IP: 23.59.92.251)
エラー: repo 'rhel-9-for-x86_64-baseos-eus-debug-rpms' のメタデータのダウンロードに失敗しました : Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
```

**3. 原因**

上記のエラーは、以下の4つの原因が考えられます。

1. リポジトリ `rhel-9-for-x86_64-baseos-eus-debug-rpms` が無効化されていない
2. ネットワーク接続に問題がある
3. リポジトリサーバーに問題がある
4. キャッシュの問題

**4. エラー解決策**

上記の4つの原因に対して、以下の解決策を試すことができます。

**4.1. リポジトリの無効化**

以下のコマンドを実行して、リポジトリ `rhel-9-for-x86_64-baseos-eus-debug-rpms` が存在するかどうかを確認します。

```
sudo dnf repolist | grep rhel-9-for-x86_64-baseos-eus-debug-rpms
```

リポジトリが存在する場合は、以下の手順で無効化します。

1. `/etc/yum.repos.d/` ディレクトリにあるリポジトリ設定ファイルを開きます。

```
sudo vim /etc/yum.repos.d/<リポジトリ名>.repo
```

例:

```
sudo vim /etc/yum.repos.d/redhat.repo
```

2. ファイル内の `enabled=1` を `enabled=0` に変更します。

3. ファイルを保存して終了します。

```
:wq!
```

4. リポジトリの無効化を反映するために、以下のコマンドを実行します。
(上記のviエディターを使用した方法をしてるなら、やらなくてよくて、理由は、同じ意味の操作だから)

```
sudo dnf config-manager --disable rhel-9-for-x86_64-baseos-eus-debug-rpms
```

**4.2. ネットワーク接続の確認**

ネットワーク接続に問題がないことを確認します。

**4.3. Red Hat サポートページの確認**

Red Hat サポートページを確認して、リポジトリサーバーに問題がないか確認します。

**4.4. キャッシュの削除**

以下のコマンドを実行して、キャッシュを削除します。

```
sudo dnf clean all
```

## 5. 手順の詳細

**5.1. リポジトリの無効化**

以下の手順で、リポジトリ `rhel-9-for-x86_64-baseos-eus-debug-rpms` を無効化します。

**1. リポジトリ設定ファイルを開く**

   以下のコマンドを実行して、`vi` コマンドで `/etc/yum.repos.d/redhat.repo` ファイルを開きます。

   ```
   sudo vi /etc/yum.repos.d/redhat.repo
   ```

**2. `enabled` の設定を変更する**

   ファイル内の `enabled=1` を `enabled=0` に変更します。＜＝＝（無効化する作業）

   ```
    長いので割愛...
    
   [rhel-9-for-x86_64-baseos-rpms]
   name = Red Hat Enterprise Linux 9 for x86_64 - BaseOS (RPMs)
   baseurl = https://cdn.redhat.com/content/dist/rhel9/$releasever/x86_64/baseos/os
   enabled = 1　＜－－－　ここを「0」に変更する
   gpgcheck = 1
   gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
   sslverify = 1
   sslcacert = /etc/rhsm/ca/redhat-uep.pem
   sslclientkey = /etc/pki/entitlement/3995217458996691560-key.pem
   sslclientcert = /etc/pki/entitlement/3995217458996691560.pem
   metadata_expire = 86400
   enabled_metadata = 1
   sslverifystatus = 1
   
   長いので割愛...
   ```

**3. ファイルを保存して終了する**

   `Ctrl` キーと `C` キーを同時に押し、`:wq!` と入力してファイルを保存して終了します。

**4. リポジトリの無効化を反映する**
＊上記の方法で、viエディターで編集できるなら、この方法は必要ないです。
    なぜなら、同じ操作だからです。
    
 以下のコマンドを実行して、リポジトリの無効化を反映します。
   ```
   sudo dnf config-manager --disable rhel-9-for-x86_64-baseos-eus-debug-rpms
   ```

**5.2. ネットワーク接続の確認**

以下のコマンドを実行して、ネットワーク接続に問題がないことを確認します。
(オフラインだったので、何らかのネットワークにつながっている人専用)
```
ping google.com <--参考程度にしてください。
```

**5.3. キャッシュの削除**

以下のコマンドを実行して、キャッシュを削除します。
（リポジトリの無効化してもインストールできなかったら、以下を実行し、もう一度インストールコマンドを打ってください。）

```
sudo dnf clean all
```

**6. 補足**

**6.1. systemd-sysv-generatorコマンドについて**

RHEL9では、従来のchkconfigコマンドは非推奨となり、**systemd-sysv-generator**コマンドが推奨されています。systemd-sysv-generatorコマンドは、systemdサービスファイルに必要なランレベル情報を生成するコマンドです。

**6.2. chkconfigとsystemd-sysv-generatorの比較**

| 機能 | chkconfig | systemd-sysv-generator |
|---|---|---|
| 対象 | サービスの起動・停止・設定 | systemdサービスファイルのランレベル情報生成 |
| コマンド | chkconfig service on/off/list | systemctl enable/disable service |
| 設定ファイル | /etc/sysconfig/services/service | /etc/systemd/system/service.service |

**7. まとめ**

この文書では、RHEL9でchkconfigをインストールしようとした際に発生するエラーとその解決策について説明しました。

**注意事項**

* 上記の手順は、あくまで参考情報です。ご自身の環境に合わせて、作業を行ってください
* 作業を行う前に、必ずデータのバックアップを取ってください

**参考情報**

* Red Hat Enterprise Linux 9 documentation: [https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/)
* systemd documentation: [https://www.freedesktop.org/software/systemd/man/](https://www.freedesktop.org/software/systemd/man/)

https://qiita.com/nl-naoki/items/171f04e8d3904425b9e6

https://qiita.com/nl-naoki/items/e027d86103ab5ce47b9e