it-swarm-ru.tech

Что мне делать, если я получил сообщение об ошибке KEYEXPIRED после обновления apt-get?

При обновлении моих пакетов в системе на основе 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

В Debian Wiki о SecureAPT я обнаружил, что должен удалить строку, содержащую non-us из /etc/apt/sources.list.

Я действительно сделал это, и это сработало.

1
paulgreg

Чтобы найти ключи хранилища с истекшим сроком действия и их идентификаторы, используйте apt-key следующее:

LANG=C apt-key list | grep expired

Вы получите результат, подобный следующему:

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

Идентификатор ключа - это бит после / То есть BE1DB1F1 в этом случае.

Чтобы обновить ключ, запустите

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

Примечание: Обновление ключа, очевидно, не будет работать, если сопровождающий пакета (еще) не загрузил новый ключ. В этом случае вы мало что можете сделать, кроме как связаться с сопровождающим, сообщить об ошибке в вашем дистрибутиве и т.д.

Один вкладыш для обновления всех ключей с истекшим сроком действия: (спасибо @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 обнаружит его и не будет жаловаться. Это не должно обычно случаться, но иногда случается. Что вам действительно нужно, так это знать шестнадцатеричный код ключа, который нужно добавить; как только вы это сделаете, оттуда это будет довольно сильно.

Некоторые примеры:

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

Одна из крайне маловероятных, но иногда возможных причин этой ошибки - добавление одного и того же ключа дважды с разными датами истечения срока действия. Скорее всего, вы знаете, что этот ответ будет иметь отношение к вам.

Это может произойти, как и для меня, когда вы размещаете свой собственный репозиторий со своими собственными ключами. Если вы, когда срок действия ключа истекает, просто продлите его срок действия, а не измените его, и если вы установили исходный ключ с помощью preseeding, а обновленный ключ с помощью пакета deb, то старый ключ будет находиться в /etc/apt/trusted.gpg, а новый заканчивается как отдельный файл в /etc/apt/trusted.gpg.d/. Старый ключ будет затенять новый, который будет полностью игнорироваться apt-key. Удалите старый ключ, запустив gpg --keyring /etc/trusted.gpg --delete-keys <keyid>, и ваш новый ключ будет обнаружен.

Это немного нестандартная угловая конфигурация, но я надеюсь, что мой ответ может спасти некоторую путаницу, если кто-то еще столкнется с этой проблемой по той же причине, что и я.

1
sampi

Более простой 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

Я просто чувствую, что если вы делаете такие вещи, как cut более одного раза, есть лучший инструмент. (Кроме того, я создал это на основе другой вопрос .)

1
Bruno Bronosky

Вы не должны ничего делать. Это просто предупреждение, вы можете видеть это из W: приставка.

0
Michael Franzl