GPGエラーが出た
apt update
でパッケージリストをアップデートする際に以下のようなエラーが出ることがある.
W: 署名照合中にエラーが発生しました。リポジトリは更新されず、過去のインデックスファイルが使われます。GPG エラー: https://apt.repos.intel.com/intelpython binary/ InRelease: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY ACFA9FC57E6C5DBE
W: https://apt.repos.intel.com/intelpython/binary/InRelease の取得に失敗しました 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY ACFA9FC57E6C5DBE
エラーの原因
公開鍵を登録していない,もしくは登録していた公開鍵の有効期限が切れたことが原因.
公開鍵を登録さえすれば解決する.
解決法
次のコマンドで公開鍵の登録ができる.
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <公開鍵>
今回の場合は<公開鍵>の部分にACFA9FC57E6C5DBE
を入れれば良い.
うまく行かない場合
上記のコマンドを打っても下のようにうまく動作しない場合がある.
Executing: /tmp/tmp.QDLh95UeD3/gpg.1.sh --keyserver
keyserver.ubuntu.com
--recv-keys
ACFA9FC57E6C5DBE
gpg: 鍵7E6C5DBEをhkpからサーバkeyserver.ubuntu.comに要求
gpg: 鍵サーバのタイムアウト
gpg: 鍵サーバからの受信に失敗しました: 鍵サーバのエラー
多くの場合はファイアウォールが原因になっている.
apt-key adv
は,標準ではポート11371で通信をするため,ファイアウォールにブロックされることがある.
ポート開放する場合
Ubuntuなら以下のコマンドでポートを開放できる
sudo ufw allow <ポート番号>
通信するポートを変える場合
ポートの開放ができない場合,もしくはポートを開けたくない場合は開いているポートで通信を行う.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:<ポート番号> --recv-keys <公開鍵>
<ポート番号>は開いていればどこでも良い.
よく分からなければ,80にしておけばたいてい通る.
まとめ
apt update
でGPGエラーが出た場合の解決法をまとめた.
僕がこのエラーに初めて遭遇したときは,ファイアウォールにブロックされていると分かるまでにかなり時間がかかった.
誰かの作業の参考になればと思う.
余談
先日,新規マシンの環境構築中にGPGエラーが出た.
公開鍵の期限は切れていないし,ファイアウォールを切ってもつながらない,と色々と原因探しをしていたのだが,よくよく考えてみればLANケーブルを繋いでいなかった.
環境設定,環境構築時には冷静になろう.