技術・開発

【Rocky Linux】gitlab-runnerの更新エラー「Bad GPG signature」の原因と手軽な解決策

2022年3月30日

Rocky Linuxにインストールしている gitlab-runner をアップデート(dnf update)しようとしたところ、以下のようなメタデータのダウンロードエラーが発生しました。

[root@localhost dnf]# dnf update
# (中略)
エラー: repo 'runner_gitlab-runner' のメタデータのダウンロードに失敗しました : repomd.xml GPG signature verification error: Bad GPG signature

「Bad GPG signature」と出ている通り、GPGの署名検証に失敗しているようです。

原因:GitLabのGPG鍵の有効期限切れ

GitLabの公式ドキュメントを確認してみたところ、どうやら2022年3月2日に以前のGPG鍵の有効期限が切れたことが原因のようです。 そのため、リポジトリから新しいパッケージを取得するには、新しいGPG鍵を再インストール(インポート)し直す必要があります。

対応方法:DNFキャッシュの削除と再取得

公式ドキュメントには gpg コマンドを使って古い鍵を削除するループ処理が案内されています。

# 公式ドキュメントの案内
for pubring in /var/cache/dnf/gitlab_gitlab-?e-*/pubring
do
  gpg --homedir $pubring --delete-key F6403F6544A38863DAA0B6E03F01618A51312F3F
done

もちろんこれでも解決するのですが、もっと手っ取り早く**「/var/cache/dnf にあるGitLab関連のキャッシュフォルダごと削除して、dnfをクリーンアップする」**という方法で対応してみたところ、無事に解決できました。手順は以下の通りです。

1. GitLab関連のキャッシュフォルダを削除

[root@localhost ~]# cd /var/cache/dnf/
[root@localhost dnf]# ll
# (中略)
drwxr-xr-x. 4 root root     37  3月 30 00:17 runner_gitlab-runner-78ffd4dc17de64d5
drwxr-xr-x. 3 root root     21  3月 30 00:16 runner_gitlab-runner-source-753dcd1b49708d24

# GitLab Runner関連のキャッシュディレクトリを丸ごと削除します
[root@localhost dnf]# rm -rf /var/cache/dnf/runner_gitlab-runner-*

2.dnfのクリーンアップ

[root@localhost dnf]# dnf clean all
41 ファイルが削除されました

3. 再度アップデートを実行(新GPG鍵のインポート)

改めて dnf update を実行します。キャッシュが消えているため、途中で新しいGPG鍵をインポートするか聞かれます。すべて y で進めます。

[root@localhost dnf]# dnf update
# (中略)
GPG 鍵 0x51312F3F をインポート中:
 Userid     : "GitLab B.V. (package repository signing key) <packages@gitlab.com>"
 Fingerprint: F640 3F65 44A3 8863 DAA0 B6E0 3F01 618A 5131 2F3F
 From       : [https://packages.gitlab.com/runner/gitlab-runner/gpgkey](https://packages.gitlab.com/runner/gitlab-runner/gpgkey)
これでよろしいですか? [y/N]: y
# (※この後、何度か確認を聞かれるので y で進めます)
・
・
依存関係が解決しました。
===========================================================================================================
 パッケージ                     Arch      バージョン                  Repo                   サイズ
===========================================================================================================
 gitlab-runner                  x86_64    14.9.1-1                    runner_gitlab-runner

無事にGPG鍵が更新され、アップデートが通るようになりました!

GitLab本体(gitlab-cegitlab-ee)や、他のリポジトリで同様のGPG期限切れエラーが発生した場合も、この「キャッシュ削除 & dnf clean all」の手順でサクッと対応できそうです。

-技術・開発
-, , , , ,