apt-get update
Debianのテスト版でapt-get updateしたときに警告メッセージがでます。W: http://security.debian.org/debian-security/dists/stretch/updates/InRelease: The key(s) in the keyring /etc/apt/trusted.gpg are ignored as the file is not readable by user '_apt' executing apt-key. W: http://ftp.jp.debian.org/debian/dists/stretch/InRelease: The key(s) in the keyring /etc/apt/trusted.gpg are ignored as the file is not readable by user '_apt' executing apt-key.このメッセージが出ていてもリポジトリ情報が更新され、パッケージの更新はできていたので、しばらく無視していましたが、気になって調べ始めました。
メッセージは「_aptというユーザ(これはsynapticのユーザだと思います)が/etc/apt/trusted.gpgを読めないので無視した」という意味です。そこで、調べると、ファイルのアクセス権が次のようになっていまし。た
-rw------- 1 root root trusted.gpgこれではrootしか読み書きができません。そこでchmodでアクセス権を変えます。
# chmod o+r /etc/apt/trusted.gpgこの後再びsynapticを起動すると、今度は別のエラーが現れました。
署名照合中にエラーが発生しました。リポジトリは更新されず、過去のインデックスファイルが使われます。 GPG エラー: http://ftp.jp.debian.org/debian stretch InRelease: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010 署名照合中にエラーが発生しました。リポジトリは更新されず、過去のインデックスファイルが使われます。 GPG エラー: http://security.debian.org/debian-security stretch/updates InRelease: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 9D6D8F6BC857C906 NO_PUBKEY 8B48AD6246925553 http://ftp.jp.debian.org/debian/dists/stretch/InRelease の取得に失敗しました 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010 http://security.debian.org/debian-security/dists/stretch/updates/InRelease の取得に失敗しました 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 9D6D8F6BC857C906 NO_PUBKEY 8B48AD6246925553 いくつかのインデックスファイルのダウンロードに失敗しました。これらは無視されるか、古いものが代わりに使われます。aptは実行前にサーバが正しいかどうかを公開鍵でチェックします。「その鍵が利用できない」ためリポジトリの更新はしなかった、というメッセージです。ここで、「鍵が合わなかった」のではなく「利用できなかった」のはなぜなのか?そこで、NO_PUBKEYと表示された公開鍵をdebianの鍵サーバ(keyring.debian.org)に問い合わせてみました。
$ gpg --keyserver keyring.debian.org --recv-keys 8B48AD6246925553 gpg: no valid OpenPGP data found. gpg: Total number processed: 0結果は、この鍵は見当たらない、つまり公開鍵として登録はされていない、ということです。ということは・・・?この鍵は今後stretchがtestingからstableになる時に登録する鍵IDではないでしょうか。(現在は安定版のjessieの鍵が登録されています)。使えない鍵だから、_aptが読めないようにアクセス権が制限されていたのではないかと思います。実は、/etc/apt/trusted.gpg.dディレクトリの中にjessieの公開鍵が登録されているので、そちらでdebianのパッケージのサーバを確認することができます。ですから、/etc/apt/trusted.gpgは読めなくても結果的には問題はないのです。
エラーを消すには
アクセス権を元に戻せばエラーはなくなりますが、アクセス権の警告は出ます。それもなくすには、次のようにします。cp /usr/share/keyrings/debian-archive-keyring.gpg /etc/apt/trusted.gpgjessieで使っているtrusted.gpgに変更するのです。このファイルはアクセス権も適切に設定されていて、_aptユーザも読むことができます。
長文お付き合いくださり、ありがとうございました。