Aby znaleźć wygasłe klucze repozytorium i ich identyfikatory, użyj apt-key
następujących poleceń:
LANG=C apt-key list | grep expired
Otrzymasz wynik podobny do następującego:
pub 4096R/BE1DB1F1 2011-03-29 [expired: 2014-03-28]
Identyfikator klucza to bit po /
ie BE1DB1F1
w tym przypadku.
Aby zaktualizować klucz, uruchom
sudo apt-key adv --recv-keys --keyserver keys.gnupg.net BE1DB1F1
Uwaga: Aktualizacja klucza oczywiście nie będzie działać, jeśli opiekun pakietu nie przesłał (jeszcze) nowego klucza. W takim przypadku niewiele można zrobić poza skontaktowaniem się z opiekunem, zgłoszeniem błędu w dystrybucji itp.
Jedna linijka do aktualizacji wszystkich wygasłych kluczy: (dzięki @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
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
Musisz zdobyć nowszy klucz i dodać go, w którym momencie apt go wykryje i nie będzie narzekać. To normalnie nie powinno się zdarzyć, ale czasem tak się dzieje. Tak naprawdę potrzebujesz znać kod szesnastkowy klucza, który musisz dodać; kiedy już to masz, jest już prawie z górki.
Kilka przykładów:
dodawanie kluczy do backportów : pierwsze kilka linii jest tym, czego szukasz, chociaż musisz mieć klucz, którego chce.
dodając klucze ala Ubuntu
źródło
Miałem podobny błąd, ale problem dotyczył czasu systemowego. Był rok 1961 :)
Poprawiłem datę / czas systemowy, a potem mogłem aktualizować bez profesjonalisty
źródło
Na Wiki Debiana o SecureAPT znalazłem, że powinienem usunąć wiersz zawierający
non-us
z /etc/apt/sources.list.Właściwie to zrobiłem i zadziałało.
źródło
Może się to również zdarzyć, gdy data jest niepoprawna.
Sprawdź datę za pomocą
Jeśli jest źle skonfigurowany, wykonaj następujące czynności, aby ustawić automatyczną synchronizację strefy czasowej i daty.
źródło
Jedną z bardzo mało prawdopodobnych, ale czasami możliwych przyczyn tego błędu, jest dwukrotne dodanie tego samego klucza z różnymi datami wygaśnięcia. Prawdopodobnie wiesz, że to zrobiłeś, aby ta odpowiedź była dla Ciebie odpowiednia.
Może się tak zdarzyć, tak jak w przypadku mnie, gdy hostujesz własne repozytorium z własnymi kluczami. Jeśli podczas wygaśnięcia klucza po prostu przedłużysz jego żywotność, a nie go zmienisz, a jeśli zainstalowałeś oryginalny klucz za pomocą wstępnego cięcia, ale zaktualizowany klucz za pomocą pakietu deb, stary klucz będzie włączony
/etc/apt/trusted.gpg
, podczas gdy nowy kończy się jako osobny plik pod/etc/apt/trusted.gpg.d/
. Stary klucz zasłoni nowy, który zostanie całkowicie zignorowanyapt-key
. Usuń stary klucz, uruchamiającgpg --keyring /etc/trusted.gpg --delete-keys <keyid>
, a nowy klucz zostanie wykryty.Jest to trochę niestandardowa konfiguracja narożna, ale mam nadzieję, że moja odpowiedź może zaoszczędzić trochę zamieszania na wypadek, gdyby ktoś napotkał ten problem z tego samego powodu, co ja.
źródło
Prostszy 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
Po prostu czuję, że jeśli robisz takie rzeczy, jak używanie
cut
więcej niż raz, istnieje lepsze narzędzie. (Stworzyłem to również na podstawie innego pytania ).źródło
Nie musisz nic robić. To tylko ostrzeżenie, widać to na podstawie
W:
prefiksu.źródło