「The GPG keys listed for the “MySQL 5.7 Community Server” repository are already installed but they are not correct for this package.」を解決する

最近、新しいブログサイトを立ち上げようと Alibaba Cloud の Simple Application Server のインスタンスを1つ作りました。 30分ほどでWordPressを立ち上げることができました。 そんな中でシステムを最新化しようと yum update をかけていたところタイトルにあるメッセージで mysql-community-client の更新が止まってしまいます。 この記事はその解決方法の紹介となります。

The GPG keys listed for the "MySQL 5.7 Community Server" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.


 Failing package is: mysql-community-client-5.7.44-1.el7.x86_64
 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

結論を先に言うとGPG情報を最新化(以下コマンド)することで解決できました。

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023

問題が発生した環境について

この話の前提として、問題が起きた環境は以下の通りです。

項目バージョン
CentOS7.9
MySQL5.7
WordPress5.8
apache2.4.46
php7.4.16

この環境は Alibaba Cloud のSimple Application Server でインスタンスを作成する際に指定したApps Image で自動的に払い出された環境となります。 この環境を yum update で最新化しようとして上記のとおり mysql-community-client の更新に失敗したという状況です。

Google Gemini によるトラブルシューティング

これまでは問題が起きると表示されたメッセージをもとに Google 検索や MySQL の公開ドキュメントなどを私が確認しトラブルシューティングを行っていました。 今回は最近導入した生成AIとなる Google Gemini に解決方法を聞いてみることにします。  

bigriver.jp
bigriver.jp

You are a MySQL engineer. 
Please tell me what to do if the following error message is output.

The GPG keys listed for the “MySQL 5.7 Community Server” repository are already installed but they are not correct for this package.

Check that the correct key URLs are configured for this repository.

Failing package is: mysql-community-client-5.7.44-1.el7.x86_64

GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

Gemini
Gemini

Absolutely! Here’s a breakdown of why you are likely seeing the “The GPG keys listed for the…” error message and how to address it when working with the MySQL 5.7 Community Server repository.

Understanding the Error

This error occurs when GPG key mismatches prevent your system from verifying the authenticity and integrity of a MySQL package you’re attempting to install. Here’s why:

  • GPG Keys: GPG (GNU Privacy Guard) keys are used to digitally sign software packages. This signing process ensures you’re getting software from the legitimate source and it hasn’t been tampered with.
  • Repository Configuration: When you set up a software repository (like the MySQL one), it includes information about the location of packages and their corresponding GPG keys. Your system uses the keys to verify packages before installation.
  • Key Mismatch: The error indicates the GPG key your system has on file for the MySQL repository doesn’t match the key used to sign the specific mysql-community-client-5.7.44-1.el7.x86_64 package. This could be due to several reasons we’ll explore below.

Troubleshooting Steps

  1. Check for Key Updates:
    • MySQL Website: Visit the MySQL download page (https://dev.mysql.com/downloads/repo/yum/) and check if the downloadable RPM-GPG-KEY has been updated recently.
    • Compare Keys: If there’s a newer key, download it and manually import it into your system’s keyring:Bashsudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 # Or the updated key's URL Use code with caution.content_copy
  2. Verify Repository Configuration:
    • Examine File: Open the configuration file for the MySQL repository (usually located in /etc/yum.repos.d/mysql-community.repo).
    • Check URLs: Make sure the URLs for the repository and any GPG keys are pointing to the correct official MySQL locations.
    • Fix Errors: Correct any typos or outdated URLs.
  3. Clear Cache and Retry:
    • Clean Cache: Package managers sometimes cache information. Clear the cache:Bashsudo yum clean all Use code with caution.content_copy
    • Re-Attempt Installation: Try installing the MySQL package again.
  4. Manually Install Specific Package (Temporary Workaround):
    • Download Package: Download the required package (and its dependencies) directly from the MySQL website.
    • Override GPG Check (Caution): Use rpm with the --nosignature option to install the package. This bypasses the security check, so use it only if you are absolutely confident about the package source.

Important Notes:

  • Manually overriding the GPG check compromises package verification to a degree. Use this as a last resort and temporary solution.
  • If the issue persists after trying the above, it’s possible the MySQL repository itself may have issues. You might consider contacting the repository maintainers or the MySQL community forums.

Let me know if you’d like help with any of the specific commands or need further assistance!

かなり詳しくGeminiから回答を得ることができました。

日本語で教えてもらいたい場合は以下の感じで Gemini にお願いをします。

translate to japanese

MySQLエンジニアリングを担当しております。以下のエラーメッセージが出力された場合の対処方法をご説明いたします。

「MySQL 5.7 Community Server リポジトリにリストされている GPG キーは既にインストール済みですが、このパッケージに対しては正しくありません。このリポジトリに対して正しいキーの URL が設定されていることを確認してください。」

エラーの原因

このエラーは、GPG キーの不一致により、システムがインストールしようとしている MySQL パッケージの真正性と整合性を検証できない場合に発生します。

  • GPG キー: GPG (GNU プライバシー ガード) キーは、ソフトウェアパッケージをデジタル署名するために使用されます。この署名プロセスにより、正当なソースからソフトウェアを取得していることと、改ざんされていないことを確認できます。
  • リポジトリ設定: ソフトウェアリポジトリ (MySQLリポジトリなど) をセットアップすると、パッケージの場所と対応する GPG キーに関する情報が含まれます。システムは、インストール前にキーを使用してパッケージを検証します。
  • キーの不一致: エラーメッセージは、システムが保持している MySQL リポジトリの GPG キーが、インストールしようとしている特定の mysql-community-client-5.7.44-1.el7.x86_64 パッケージの署名に使用されているキーと一致しないことを示しています。これには以下のような理由が考えられます。

トラブルシューティング手順

  1. キーの更新を確認する
    • MySQL ウェブサイト: MySQLのダウンロードページ (https://dev.mysql.com/doc/refman/8.3/en/linux-installation-yum-repo.html) にアクセスし、ダウンロード可能な RPM-GPG-KEY が最近更新されていないかを確認してください。
    • キーの比較: 新しいキーがある場合は、それをダウンロードしてシステムのキーリングにインポートします。Bashsudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 # または更新されたキーの URL Use code with caution.content_copy
  2. リポジトリ設定を確認する
    • ファイルの確認: MySQL リポジトリの設定ファイル (通常は /etc/yum.repos.d/mysql-community.repo にあります) を開きます。
    • URL の確認: リポジトリと GPG キーの URL が正しい公式 MySQL ロケーションを指していることを確認してください。
    • エラーの修正: 入力ミスや古い URL を修正してください。
  3. キャッシュをクリアして再試行する
    • キャッシュのクリア: パッケージマネージャーは時々情報をキャッシュします。キャッシュをクリアします。Bashsudo yum clean all Use code with caution.content_copy
    • インストールの再試行: MySQL パッケージのインストールを再度試行してください。
  4. 特定のパッケージを手動でインストールする (一時的な回避策)
    • パッケージのダウンロード: 必要に応じてパッケージ (とその依存関係) を MySQL ウェブサイトから直接ダウンロードします。
    • GPG チェックの無効化 (注意): rpm コマンドと --nosignature オプションを使用してパッケージをインストールします。これによりセキュリティチェックが回避されるため、パッケージのソースを完全に信頼できる場合にのみ使用してください。

重要な注意事項

  • GPG チェックを手動で無効化すると、パッケージの検証が不十分になります。この方法は最後の手段として一時的に使用してください。
  • 上記の手順を試しても問題が解決しない場合は、MySQL リポジトリ自体に問題がある可能性があります。リポジトリの管理者または MySQL コミュニティフォーラムに問い合わせることを検討してください。

特定のコマンドの実行やさらなる支援が必要な場合は、遠慮なくお尋ねください。

ということでこのメッセージが起きた原因やそのなかでキーポイントとなっているGPGとはなんなのか、そして複数の解決方法を提示してくれました。 

今回はキーの不一致ということで新しいキーのインポートを試すことにします。以下の解決策のサンプルコマンドが紹介されています。

sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

もっと最新のものが無いか確認してみます。Webブラウザから「https://repo.mysql.com/」にアクセスします。 結果は以下のスクリーンショットですが、2022より新しい”RPM-GPG-KEY-mysql-2023”があることがわかります。

(Gemini に「Where latest version is RPM-GPG-KEY-mysql?」と聞いても同様の答えが得られることがあとでわかりました。)

ということで Alibaba Cloud のSimple Application Server のインスタンスで以下を実行することで yum update は成功し、この問題は解決しました。

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023

まとめ

この GPG KEYが古くて yum が失敗するのはよくある話なので今回紹介する内容にそれほど新規性やタメになる内容というものは正直ありません。 ただ、Google Gemini をトラブルシューティングに使ってみた感触はとても良いものでした。 これまではエラーメッセージをGoogle検索にかけたり、公式ドキュメントやコミュニティの掲示板などで情報を探しておりそれなりに時間がかかったり、出てくる情報を精査したり、原因の確認を別途手間をかけておこなっていたものです。 それが Gemini はたった数秒で問題の概要やその原因(キーポイントの技術の解説を含む)、複数の解決方法を具体的に提示してくれました。 その説明は体系的にカテゴライズされた文章となっており極端な話このまま他者に説明や提示可能な体裁です。  

実は生成AIについては仕事(ビジネス、会社の中でというニュアンス)で使うという観点ではあまりポジティブではありませんでした。  最終確認や判断を行う立場だと結局は生成AIが出力した内容をすべて精査する必要があったためです。 技術的な妥当性、情報の鮮度、自分が腹落ちして説明できるか、その内容の裏付け(公式情報)の紐づけ、知財視点で権利侵害が無いか、など。  

結果として、自分(個人)が管理しているパーソナルユースのシステムの管理という意味では非常に有用でした。 Gemini が出力した内容を自分で調べて作文しようと思ったら1時間や2時間はかかったと思います。 それがたった数秒で出力され、実際の問題解決(yum の失敗が解消される)も5分もかからなかったので。 

今回の記事はMySQL5.7のUpdateのトラブルシューティングの話でした。 知っている人は知っているかと思いますが MySQL 5.7系はそもそもEOLを迎えています。 PHPも7.4系でこちらもEOLを迎えています。 Alibaba Cloud の Simple Application Server で提供されたWordPressがすぐに使えるオールインワンのイメージを今回利用していのですがこれでは外部公開出来ないことがわかり今後の対応を悩んでいるところです。(まあ作り直すなり、最新化するだけでそこまで困ってはいませんがこの対応は別の記事で)

以上