AlmaLinuxでdnfやyumを使うとGPG checkエラーになった

AlmaLinuxでdnfやyumを使うとGPG checkエラーになった

久しぶりのサーバー移行案件が発生。

CentOS7 → AlmaLinux9

とある会社でVPSを契約してみるとAlmaLinux8.5だったので、自分の過去の備忘録記事を見ながらアップグレードすることに。まさにこういう時のために書いたのだよ!

GPG checkエラーの解決策

先に答えを書いてしまおう。

「AlmaLinuxでdnfやyumを使うとGPG checkエラーになった」場合は、下記コマンドでキーを更新すればよろし。これ以下の記事は、何も解決しない蛇足である。が、個人的な記録として残しておくよ。

# rpm --import https://repo.almalinux.org/almalinux/RPM-GPG-KEY-AlmaLinux

以下蛇足。無駄なメモ。ChatGPTと歩んだ無駄な冒険譚。

念のためSSHでログインしてOSを確認

# tail /etc/redhat-release
AlmaLinux release 8.5 (Arctic Sphynx)

OK。
次は最新に更新。

# dnf update -y
:
:
Public key for wget-1.19.5-12.el8_10.x86_64.rpm is not installed. Failing package is: wget-1.19.5-12.el8_10.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'dnf clean packages'.
Error: GPG check FAILED

GPGキーが無いとか言ってる。

# rpm --import https://repo.almalinux.org/almalinux/RPM-GPG-KEY-AlmaLinux

# tail /etc/redhat-release 
AlmaLinux release 8.10 (Cerulean Leopard)

8.10まで進んだ。以前最新の8.9まで行ったら、9系にアップグレードできなったとメモされていたので、少し不安になった。

# dnf install -y http://repo.almalinux.org/elevate/elevate-release-latest-el$(rpm --eval %rhel).noarch.rpm
# dnf install -y leapp-upgrade leapp-data-almalinux
:
:
RPM: error: db5 error(-30969) from dbenv->open: BDB0091 DB_VERSION_MISMATCH: Database environment version mismatch
RPM: error: cannot open Packages index using db5 -  (-30969)
RPM: error: cannot open Packages database in /var/lib/rpm
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'dnf clean packages'.
Error: Could not run transaction.

調べるのもめんどー。
こういうときは、文明の利器「ChatGPT」に訊けばよろし。

GPT曰く、

このエラーは、RPMパッケージデータベースのバージョンの不一致によって発生しています。具体的には、RPMデータベースの形式が古く、現在のシステムで使用されているRPMバージョンと互換性がないためです。この問題を解決するためには、RPMデータベースを再構築する必要があります。以下の手順で進めてください。

手順

  1. RPMデータベースのバックアップを作成
    念のため、RPMデータベースのバックアップを作成します。bashコードをコピーする
    cp -a /var/lib/rpm /var/lib/rpm.bak
  2. RPMデータベースの再構築
    次に、RPMデータベースを再構築します。bashコードをコピーする
    rm -f /var/lib/rpm/__db*
    rpm --rebuilddb
  3. DNFキャッシュのクリア
    DNFキャッシュをクリアしてから再度試みます。bashコードをコピーする
    dnf clean all
    dnf upgrade -y
  4. 問題のコマンドを再実行
    上記の手順を完了した後、もう一度元のコマンドを実行します。bashコードをコピーする
    dnf install -y leapp-upgrade leapp-data-almalinux

注意点

  • 上記の手順を実行するには、ルート権限が必要です。
  • RPMデータベースの再構築が成功しない場合、システムに問題がある可能性があります。その場合は、システムを再起動してから再試行するか、さらに深いトラブルシューティングが必要かもしれません。

これで問題が解決するはずです。

素晴らしい。しっかり解決だ。

# dnf install -y leapp-upgrade leapp-data-almalinux
:
:
Installed:
  NetworkManager-libnm-1:1.40.16-15.el8_9.x86_64          checkpolicy-2.9-1.el8.x86_64                       leapp-0.16.0-2.el8.noarch                      
  leapp-data-almalinux-0.2-15.el8.20230823.noarch         leapp-deps-0.16.0-2.el8.noarch                     leapp-upgrade-el8toel9-1:0.19.0-7.1.el8.noarch 
  leapp-upgrade-el8toel9-deps-1:0.19.0-7.1.el8.noarch     policycoreutils-python-utils-2.9-26.el8_10.noarch  python3-audit-3.1.2-1.el8.x86_64               
  python3-chardet-3.0.4-7.el8.noarch                      python3-idna-2.5-7.el8_10.noarch                   python3-leapp-0.16.0-2.el8.noarch              
  python3-libsemanage-2.9-9.el8_6.x86_64                  python3-pip-9.0.3-24.el8.noarch                    python3-policycoreutils-2.9-26.el8_10.noarch   
  python3-pysocks-1.6.8-3.el8.noarch                      python3-pyudev-0.21.0-7.el8.noarch                 python3-requests-2.20.0-3.el8_8.noarch         
  python3-setools-4.3.0-5.el8.x86_64                      python3-setuptools-39.2.0-8.el8_10.noarch          python3-urllib3-1.24.2-8.el8_10.noarch         
  python36-3.6.8-39.module_el8.10.0+3769+3838165b.x86_64  systemd-container-239-82.el8_10.1.x86_64          

Complete!

firewalldの設定を変えて

# vi /etc/firewalld/firewalld.conf

# AllowZoneDrifting=yes
AllowZoneDrifting=no

いざ、アップグレード!

# leapp preupgrade
==> Processing phase `configuration_phase`
====> * ipu_workflow_config
        IPU workflow config actor
==> Processing phase `FactsCollection`
====> * vendor_repositories_mapping
        Scan the vendor repository mapping files and provide the data to other actors.
====> * system_facts
        Provides data about many facts from system.
Process Process-184:
Traceback (most recent call last):
  File "/usr/lib64/python3.6/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/usr/lib64/python3.6/multiprocessing/process.py", line 93, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/lib/python3.6/site-packages/leapp/repository/actor_definition.py", line 74, in _do_run
    actor_instance.run(*args, **kwargs)
  File "/usr/lib/python3.6/site-packages/leapp/actors/__init__.py", line 289, in run
    self.process(*args)
  File "/etc/leapp/repos.d/system_upgrade/common/actors/systemfacts/actor.py", line 65, in process
    bios_grubcfg_details = systemfacts.get_bios_grubcfg_details()
  File "/etc/leapp/repos.d/system_upgrade/common/actors/systemfacts/libraries/systemfacts.py", line 352, in get_bios_grubcfg_details
    with open('/boot/grub2/grub.cfg') as fo:
FileNotFoundError: [Errno 2] No such file or directory: '/boot/grub2/grub.cfg'
2024-08-23 17:55:22.944 ERROR    PID: 28056 leapp.workflow.FactsCollection: Actor system_facts has crashed: Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/leapp/repository/actor_definition.py", line 74, in _do_run
    actor_instance.run(*args, **kwargs)
  File "/usr/lib/python3.6/site-packages/leapp/actors/__init__.py", line 289, in run
    self.process(*args)
  File "/etc/leapp/repos.d/system_upgrade/common/actors/systemfacts/actor.py", line 65, in process
    bios_grubcfg_details = systemfacts.get_bios_grubcfg_details()
  File "/etc/leapp/repos.d/system_upgrade/common/actors/systemfacts/libraries/systemfacts.py", line 352, in get_bios_grubcfg_details
    with open('/boot/grub2/grub.cfg') as fo:
FileNotFoundError: [Errno 2] No such file or directory: '/boot/grub2/grub.cfg'



=============================================================================================
Actor system_facts unexpectedly terminated with exit code: 1 - Please check the above details
=============================================================================================

Debug output written to /var/log/leapp/leapp-preupgrade.log

============================================================
                      REPORT OVERVIEW                       
============================================================

Upgrade has been inhibited due to the following problems:
    1. File "/etc/default/grub" does not exist!

Reports summary:
    Errors:                      1
    Inhibitors:                  1
    HIGH severity reports:       0
    MEDIUM severity reports:     0
    LOW severity reports:        0
    INFO severity reports:       0

Before continuing consult the full report:
    A report has been generated at /var/log/leapp/leapp-report.json
    A report has been generated at /var/log/leapp/leapp-report.txt

============================================================
                   END OF REPORT OVERVIEW                   
============================================================

Answerfile has been generated at /var/log/leapp/answerfile

GPTさん?

このエラーメッセージは、leapp preupgrade がシステムのアップグレードを試みた際に、/boot/grub2/grub.cfg ファイルが存在しないことが原因で発生しています。また、/etc/default/grub ファイルも存在しないため、アップグレードが抑止されているようです。

問題の概要

  • leapp preupgrade/boot/grub2/grub.cfg ファイルを探していますが、見つからないため、プロセスがクラッシュしています。
  • /etc/default/grub ファイルがないため、アップグレードが抑止されています。

解決方法

1. GRUB 設定ファイルの確認と再生成

まず、/boot/grub2/grub.cfg ファイルが存在しないため、GRUB設定ファイルを再生成する必要があります。以下のコマンドを実行してみてください。

# grub2-mkconfig -o /boot/grub2/grub.cfg

このコマンドは、現在のシステム状態に基づいてGRUB設定ファイルを再生成します。

2. /etc/default/grub ファイルの確認

/etc/default/grub ファイルが存在しないため、このファイルを作成する必要があります。通常、このファイルはGRUBの設定ファイルで、ブートローダーのオプションを設定します。

/etc/default/grub ファイルを次の内容で作成してください。

# vi /etc/default/grub

GRUB_TIMEOUT=3
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

ファイルを保存して閉じます。

3. 再試行

GRUB設定ファイルと/etc/default/grubファイルを修正した後、leapp preupgrade コマンドを再実行してみてください。

# leapp preupgrade

最後に

これでエラーが解決し、アップグレードを進めることができるはずです。問題が解決しない場合は、ログファイル(/var/log/leapp/leapp-preupgrade.log/var/log/leapp/leapp-report.txt)を確認し、追加のエラーメッセージや警告を調べてください。

ほうほう。なんか、やっかいそうだけど。。

# leapp preupgrade
:
:
Following errors occurred and the upgrade cannot continue:
    1. Actor: scan_source_kernel
       Message: Unable to obtain kernel information of the booted kernel: no package is providing the booted kernel release returned by uname.

Reports summary:
    Errors:                      1
    Inhibitors:                  0
    HIGH severity reports:       0
    MEDIUM severity reports:     0
    LOW severity reports:        0
    INFO severity reports:       0

このエラーメッセージは、leapp preupgrade が実行された際に、現在のカーネルに関連するパッケージ情報を取得できなかったために発生しています。この問題は、現在のカーネルがインストールされているパッケージから提供されていない場合や、カーネル関連のパッケージが破損している場合に発生することがあります。

解決方法

  1. 現在のカーネルの確認まず、現在使用しているカーネルのバージョンを確認します。bashコードをコピーするuname -r このコマンドにより、現在のカーネルのバージョンが表示されます。
  2. カーネルパッケージの確認次に、rpm コマンドを使用して、現在のカーネルバージョンに対応するパッケージがインストールされているか確認します。bashコードをコピーするrpm -q kernel このコマンドにより、システムにインストールされているすべてのカーネルパッケージのリストが表示されます。現在使用しているカーネルバージョン(uname -rで確認したもの)がリストに含まれていない場合、カーネルパッケージが適切にインストールされていない可能性があります。
  3. カーネルパッケージの再インストール現在のカーネルに対応するパッケージが見つからない場合、または壊れている可能性がある場合は、カーネルパッケージを再インストールする必要があります。bashコードをコピーするsudo dnf reinstall kernel-$(uname -r) このコマンドは、現在使用しているカーネルバージョンに対応するカーネルパッケージを再インストールします。
  4. システムの再起動カーネルパッケージを再インストールした後、システムを再起動して、新しいカーネルが正しくロードされるようにします。bashコードをコピーするsudo reboot
  5. leapp preupgrade の再実行システムが再起動したら、再度 leapp preupgrade を実行して、問題が解決したかどうかを確認します。bashコードをコピーするsudo leapp preupgrade

これらの手順で問題が解決し、アップグレードの準備が正常に進むはずです。もし再インストール後も同じエラーが発生する場合は、カーネル関連のさらに深い問題があるかもしれません。その場合、システムのログを詳しく調査するか、サポートに問い合わせることを検討してください。

# uname -r
4.18.0
# rpm -q kernel
package kernel is not installed
# dnf reinstall kernel-$(uname -r)
Last metadata expiration check: 0:09:55 ago on Fri Aug 23 17:51:56 2024.
Package kernel available, but not installed.
No match for argument: kernel-4.18.0
Error: No packages marked for reinstall.  

カーネルが無いそうだ。

# dnf install kernel 
# reboot

それでもやはり変わらない。

分かった結果はこうだ。”サーバーの契約がコンテナだったから。”

KVMじゃないと、そもそもダメってこと。何という無駄な時間だったことだろう。

この記事が少しでも役に立ったと思ったらあなたのSNSに是非シェアしてください。

Add comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Follow Me

読みたい記事内容に投票

投票数が多い記事から優先的に記事を作っていこうと思います。是非投票してください!
Twillioでサーバーダウン時に電話コール通知方法
6票
iPhoneのYouTubeアプリで広告ブロック
5票
楽天証券の取引一覧ページを見やすくして自動更新させるには
3票
PHPでDropboxにファイルアップロード
2票
F-Droidおススメアプリ
1票
Linuxサーバーでメール送受信ができない時のチェックポイント
0票
PC版ChiakiでPSリモートプレイ
0票
株式会社RES 児玉一希の似非投資術を暴く
0票
CoinOPS NEXT2に好きなエミュレーターを追加
0票