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


74

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

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

回答:


117

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

LANG=C apt-key list | grep expired

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

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

キーIDは、この場合、/ieの後のビット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

2
私にとってはうまくいきません。キーを更新するコマンドの後、キーの有効期限はまだ切れています。
カールフォーナー14年

@KarlFornerはキーの追加に成功しましたか?
kynan 14年

はい、成功しました。
カールフォーナー14年

4
1つのライナー: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
ryanpcmcquen

2
grep部分に関するヒント:「期限切れ」はi18nedであるため、LANG *設定によっては機能しない場合があります。たとえば、pl_PL.UTF-8の設定では、「expired」を「wygasł」に変更する必要があります。動作するライナー。
クロマックス

6

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

いくつかの例:


2

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

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


1

SecureAPTについてのDebianのWiki、私は含む行削除すべきであることがわかってきたnon-usの/etc/apt/sources.listからを。

私は実際にそれをしました、そして、それは働きました。


5
これは特定のケースで機能した可能性がありますが、一般的なソリューションではありません
-kynan

1

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

で日付を確認してください

date

設定が間違っている場合は、次の手順を実行してタイムゾーンと日付の自動同期を設定します。

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

1

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

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

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


1

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

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複数回使用するようなことをしている場合、より良いツールがあると感じています。(また、別の質問に基づいて作成しまし。)


-1

何もする必要はありません。これは単なる警告であり、W:プレフィックスから確認できます。


1
彼が何もする必要がなければ、Reposの署名システム全体は役に立たないでしょう。これはセキュリティ機能であり、本番環境ではキーの整合性がセキュリティにとって重要です。
-Broco
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.