web-dev-qa-db-ja.com

apt-getの更新後にKEYEXPIREDエラーメッセージが表示された場合はどうすればよいですか?

Debianベースのシステムで私のパッケージを更新している間、

Sudo apt-get update

私はそのエラーメッセージを持っています:

Reading package lists... Done
W: GPG error: ftp://ftp.fr.debian.org stable/non-US Release: 
The following signatures were invalid: KEYEXPIRED 1138684904

これを修正するにはどうすればよいですか?

74
paulgreg

SecureAPTに関するDebian Wiki で、non-usを含む行を/etc/apt/sources.listから削除する必要があることがわかりました。

私は実際にそれをしました、そしてそれはうまくいきました。

1
paulgreg

期限切れのリポジトリキーとそのIDを見つけるには、次のようにapt-keyを使用します。

LANG=C apt-key list | grep expired

次のような結果が得られます。

pub   4096R/BE1DB1F1 2011-03-29 [expired: 2014-03-28]

キーIDは/の後のビット、つまりこの場合はBE1DB1F1です。

キーを更新するには、実行します

Sudo apt-key adv --recv-keys --keyserver keys.gnupg.net BE1DB1F1

注:パッケージのメンテナが新しいキーを(まだ)アップロードしていない場合、キーの更新は明らかに機能しません。その場合、メンテナに連絡したり、ディストリビューションにバグを報告したりする以外にできることはほとんどありません。

すべての期限切れのキーを更新する1つのライナー:(@ryanpcmcquenに感謝)

for K in $(apt-key list | grep expired | cut -d'/' -f2 | cut -d' ' -f1); do Sudo apt-key adv --recv-keys --keyserver keys.gnupg.net $K; done
118
kynan

新しいキーを取得して追加する必要があります。その時点で、aptはそれを検出して文句を言いません。これは通常は発生しませんが、発生することがあります。本当に必要なのは、追加する必要のあるキーの16進コードを知ることです。一度それを取得すると、そこからかなり下り坂になります。

いくつかの例:

6
Avery Payne

同様のエラーが発生しましたが、問題はシステム時間にありました。年は1961年でした:)

システムの日付/時刻を修正した後、プロなしで更新できた

2
slava

日付が正しくない場合にも発生する可能性があります。

日付を確認してください

date

正しく構成されていない場合は、次の手順を実行して、タイムゾーンと日付の自動同期を設定します。

apt-get install ntp ntpdate && service ntp stop
dpkg-reconfigure tzdata
ntpdate-debian
service ntp start
1
Aley

可能性は非常に低いですが、場合によっては、このエラーの原因として、有効期限の異なる同じキーを2回追加したことが考えられます。この回答があなたに関連するためにそうしたことを知っているでしょう。

これは、私と同じように、独自のキーを使用して独自のリポジトリをホストするときに発生する可能性があります。キーの有効期限が近づいているときに、キーを変更するのではなく、単に寿命を延ばす場合、およびpreseedingを使用して元のキーをインストールしたが、debパッケージを使用して更新したキーをインストールした場合、古いキーは/etc/apt/trusted.gpgにあります。 、新しいファイルは/etc/apt/trusted.gpg.d/の下の別のファイルになります。古いキーは新しいキーをシャドウしますが、apt-keyによって完全に無視されます。 gpg --keyring /etc/trusted.gpg --delete-keys <keyid>を実行して古いキーを削除すると、新しいキーが検出されます。

これは少し標準的ではないコーナー構成ですが、私と同じ理由で他の誰かがこの問題に遭遇した場合に備えて、私の回答が混乱を軽減できることを願っています。

1
sampi

よりシンプルなワンライナー:

for key in $(Sudo apt-key list | awk -v FS='[ /:]+' '/expire[sd]/ {print $3}'); do Sudo apt-key adv --recv-keys --keyserver keys.gnupg.net $key; done

cutを2回以上使用するような場合には、もっと良いツールがあると思います。 (また、これを 別の質問 に基づいて作成しました。)

1
Bruno Bronosky

する必要があります何もしません。これは単なる警告です。W:接頭辞。

0
Michael Franzl