Apt-get güncellemesinden sonra KEYEXPIRED hata mesajını aldığımda ne yapmalıyım?


74

Paketlerimi debian tabanlı bir sistemde güncellerken

sudo apt-get update

O hata mesajını aldım:

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

Bunu düzeltmek için ne yapmalıyım?

Yanıtlar:


117

Süresi dolmuş depo anahtarlarını ve kimliklerini bulmak için apt-keyaşağıdakileri kullanın :

LANG=C apt-key list | grep expired

Aşağıdakine benzer bir sonuç alacaksınız:

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

Anahtar kimliği, bu durumda /örn BE1DB1F1.

Anahtarı güncellemek için

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

Not: anahtarının güncellenmesi besbelli olacak değil paket bakıcı değil (henüz) yeni bir anahtar yüklediğinde size çalışır. Bu durumda, bakıcıyla iletişim kurmaktan başka bir şey yapamazsınız, dağıtımınıza karşı bir hata yaparsınız.

Süresi dolmuş tüm anahtarları güncellemek için bir liner: (@ryanpcmcquen sayesinde)

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
Bu benim için işe yaramaz, anahtarı güncelleme komutundan sonra, anahtarın süresi dolmuş.
Karl Forner

@KarlForner anahtarı başarılı bir şekilde ekliyor muydu?
kynan

evet başarılı oldu.
Karl Forner

4
Bir liner: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
Kısım aşmak için sadece bir ipucu: "süresi dolmuş" i18ned, bu nedenle LANG * ayarlarına bağlı olarak, bu işe yaramayabilir, örneğin pl_PL.UTF-8 ayarlarının "süresi dolmuş" u "wygasł" olarak değiştirmesi gerekir. çalışmak için astar.
Cromax

6

Yeni anahtarı almanız ve eklemeniz gerekir, apt'nin hangi noktada tespit edeceği ve şikayet etmediği. Bu normalde olmamalı, ama bazen olur. Gerçekten ihtiyacınız olan, eklemeniz gereken anahtarın hex kodunu bilmek; Bunu bir kez yaptıktan sonra, oradan hemen hemen yokuş aşağı.

Bazı örnekler:


2

Benzer bir hatam vardı, fakat sorun sistem zamanımdaydı. Yıl 1961 idi :)

Sistem tarihini / saatini düzelttim ve bundan sonra profesyonelce güncelleme yapamadım


1

On SecureAPT hakkında Debian Wiki , ben içeren satırı kaldırmak gerektiğini tespit ettik non-us/etc/apt/sources.list 'dosyanıza gelen.

Bunu gerçekten yaptım ve işe yaradı.


5
Bu, belirli bir durumda işe yaramış olabilir, ancak genel bir çözüm değildir
kynan

1

Tarih doğru olmadığında da olabilir.

Tarihi kontrol et

date

Yanlış yapılandırılmışsa, saat diliminizi ve tarih otomatik senkronizasyonunuzu ayarlamak için aşağıdakileri yapın.

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

1

Muhtemel olmayan, ancak zaman zaman olası bir sebep, bu hatanın nedeni, aynı anahtarın farklı son kullanma tarihleriyle iki kez eklenmesidir. Muhtemelen bu cevabın sizinle alakalı olması için yapıldığını bileceksiniz.

Bu, benim için olduğu gibi kendi depolarınızı kendi anahtarlarınızla barındırırken olabilir. Anahtar üzeredir Eğer sona erecek olursa, basitçe ömrünü uzatmak yerine bunu değiştirmek ve Diş tırmıklar ama deb paketini kullanarak güncelleştirilmiş anahtar kullanarak orijinal anahtar yüklü, sonra eski anahtar olacak /etc/apt/trusted.gpg, yenisi ise altında ayrı bir dosya olarak biter /etc/apt/trusted.gpg.d/. Eski anahtar, tamamen yok sayılacak olan yenisini gölgeleyecektir apt-key. Eski anahtarı çalıştırarak kaldırın; gpg --keyring /etc/trusted.gpg --delete-keys <keyid>yeni anahtarınız algılanır.

Bu, standart olmayan bir köşe konfigürasyonunun bir kısmı, ancak umarım benim yaptığım aynı nedenden dolayı bu sorunla karşılaşan başka birinin kafasını karıştırabilirim.


1

Daha basit bir oneliner:

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

Sadece bir cutkereden fazla kullanmak gibi şeyler yapıyorsanız daha iyi bir araç olduğunu hissediyorum . (Ayrıca bunu farklı bir soruya dayanarak yarattım .)


-1

Sen yok etmek zorunda şey yapmak. Bu sadece bir uyarıdır, W:önekten bunu görebilirsiniz .


1
Eğer bir şey yapmak zorunda kalmazsa, Repolar için imzalamanın tamamı işe yaramazdı. Bu bir güvenlik özelliğidir ve üretim ortamlarında anahtar bütünlük güvenlik için çok önemlidir.
Broco
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.