GPG 鍵エラーでリポジトリ更新できない場合の解決方法

  • URLをコピーしました!

Linux で yum updateapt update を実行した際に、以下のようなエラーが出ることがあります。

The GPG keys listed for the "Repository" repository are already installed but they are not correct for this package.
NO_PUBKEY XXXXXXXXXXXXXXXX

これは、パッケージの署名を検証するための GPG 公開鍵が不足・不一致 しているときに発生します。
セキュリティ上、リポジトリは必ず署名検証を行うため、正しい GPG 鍵を導入しなければ更新ができません。

目次

主な原因

  1. 新しいリポジトリの GPG 鍵をインポートしていない
    • サードパーティリポジトリを追加した際に発生しやすい。
  2. 既存の GPG 鍵が古くなった・期限切れ
    • 公式リポジトリでも鍵が更新されることがある。
  3. 鍵の不一致
    • 違うリポジトリの鍵を誤って登録している場合。

解決方法

1. yum / dnf 系 (RHEL, CentOS, Fedora)

エラーが出たリポジトリの公開鍵をインポートします。公開鍵は通常、リポジトリ提供元のサイトにあります。

例: CentOS の公式キーを登録

sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

特定の URL から鍵を取得することも可能です。

sudo rpm --import https://www.example.com/RPM-GPG-KEY-repo

登録後、改めて更新します。

sudo yum clean all
sudo yum update

2. apt 系 (Debian, Ubuntu)

エラー例:

The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ABCD1234EF567890

不足しているキーを追加します。

2-1. apt-key で追加

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABCD1234EF567890

2-2. ファイルから追加

リポジトリ提供元から GPG 鍵ファイル(例: repo.gpg)を取得し、追加します。

wget https://www.example.com/repo.gpg
sudo apt-key add repo.gpg

その後、キャッシュを更新します。

sudo apt update

3. 古い鍵の更新

既存の鍵が古い場合、削除して新しいものを登録します。

sudo apt-key del ABCD1234EF567890
# 再度 apt-key add で登録

yum の場合も同様に、古い鍵を削除して再インポートします。

注意点

  • GPG 鍵は必ず 公式サイトや信頼できる配布元 から取得してください。
  • 不明なサイトの鍵を登録すると、悪意あるパッケージをインストールするリスクがあります。
  • apt-key は将来的に非推奨のため、可能であれば /etc/apt/trusted.gpg.d/ に直接配置する方法が推奨されています。

まとめ

  • GPG 鍵エラーは 公開鍵が未登録・期限切れ・不一致 が原因。
  • yum 系では rpm --import、apt 系では apt-key add を利用して修復する。
  • 必ず 公式の配布元から鍵を取得 することが重要。
目次