«Ошибка GPG: выпуск: следующие подписи были недействительными: BADSIG»


88

Я запустил эту команду в Терминале:

sudo apt-get update

Обновление заканчивается следующим сообщением об ошибке:

W: A error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://extras.ubuntu.com precise Release: The following signatures were invalid: BADSIG 16126D3A3E5C1192 Ubuntu Extras Archive Automatic Signing Key <ftpmaster@ubuntu.com>

W: GPG error: http://ppa.launchpad.net precise Release: The following signatures were invalid: BADSIG 4C1CBC1B69B0E2F4 Launchpad PPA for Jonathan French
W: Failed to fetch http://extras.ubuntu.com/ubuntu/dists/precise/Release  

Что это значит и почему это происходит?


4
Я видел подобную проблему, когда я впервые установил 12.04. После этого я изменил «Источники программного обеспечения» с менеджера программного обеспечения из Индии на другой сервер. Сейчас я не вижу этой проблемы. Если вы используете сервер Индии, измените его и дайте нам знать.
Abhijeet

Спасибо Abhijeet. Я индиец, но остаюсь здесь, в Катаре. Я сменил сервер на Саудовскую Аравию. Но тот же результат.
Беджу

Ответы:


90

Попробуй это:

sudo apt-get clean
sudo mv /var/lib/apt/lists /tmp
sudo mkdir -p /var/lib/apt/lists/partial
sudo apt-get clean
sudo apt-get update

4
Нет необходимости создавать partialподкаталог. sudo apt-get updateсделаю это сам.
Byte Commander

9
после выполнения вышеуказанного я все еще получаю эту ошибку:Reading package lists... Done W: GPG error: http://developer.download.nvidia.com Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F60F4B3D7FA2AF80
Мона Джалал

Возможно, стоит ответить на заданный вопрос (и заработать больше голосов ;-)).
Витольд Качурба

Ошибка на втором этапе:mv: cannot move '/var/lib/apt/lists' to '/tmp/lists': Directory not empty
Интернет-пользователь

Не могли бы вы уточнить, что именно это делает? Спасибо,
Хендрик

64

Это сообщение отображается, потому что ключ gpg для этого репозитория отсутствует в вашей базе данных apt-key.

Чтобы импортировать ключ, откройте терминал и введите эти команды

gpg --keyserver keyserver.ubuntu.com --recv-keys 16126D3A3E5C1192 

Ключи pgp в основном распространяются в нескольких хранилищах ключей. Ключи, связанные с Ubuntu, обычно находятся в keyserver.ubuntu.com. Но если это не поможет, вы можете использовать альтернативы. Подобно -

gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16126D3A3E5C1192

Вы должны заменить буквенно-цифровую часть определенным ключом. Убедитесь, что вы доверяете ключу . Любой репозиторий с этим ключом сможет установить любой пакет без предупреждения.

Вы увидите следующий результат, если вышеприведенное успешно

gpg: Total number processed: 1
gpg:               imported: 1

Затем выполните эту команду:

gpg --export --armor 16126D3A3E5C1192 | sudo apt-key add - 

Обратите внимание на -знак после add.

Тогда у sudo apt-get updateвас не будет таких сообщений после этого.


1
Привет @ Анвар, где / как я могу получить ключ, которому я доверяю?
Минни Ши

1
@MinnieShi Ключ присутствует в самом сообщении об ошибкеThe following signatures were invalid: BADSIG 16126D3A3E5C1192
Калян Рагху

1
Обратите внимание, что apt-key addкоманда должна вернуть «ОК».
Катушка

Отлично, должен быть принятый ответ! Благодарю.
Джейкоб

13

Я обнаружил, что просто делаю

sudo rm -rf /var/lib/apt/lists
sudo mkdir /var/lib/apt/lists

работал на меня.


Используйте sudo rm -rf / var / lib / apt / lists / * && sudo mkdir -p / var / lib / apt / lists, чтобы сохранить все, что может иметь разрешение / var / lib / apt / lists
131

1
Нет необходимости создавать partialподкаталог. sudo apt-get updateсделаю это сам.
Байт-командир

9

Вы можете попробовать мой скрипт, чтобы автоматически получать все ключи GPG для используемых вами PPA: smartupdate.sh .

Он запустится apt-get update, затем найдет все ошибки GPG и получит ключи для найденных подписей GPG. В вашем случае он просто запустится

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4C1CBC1B69B0E2F4

но когда вы добавляете несколько неподписанных PPA, становится скучно добавлять ключи GPG вручную. :)


6

Следующие команды решили проблему для меня:

sudo -i
apt-get clean
cd /var/lib/apt
mv lists lists.old
mkdir -p lists/partial
apt-get clean
apt-get update

1
Нет необходимости создавать partialподкаталог. sudo apt-get updateсделаю это сам.
Байт-командир

4

Я получил похожую ошибку. Но вместо этого BADSIGя получил KEYEXPIREDдля репозитория PostgreSQL:

W: A error occurred during the signature verification.
  The repository is not updated and the previous index files will be used.
  GPG error: http://apt.postgresql.org precise-pgdg Release:
  The following signatures were invalid: KEYEXPIRED 1381654177

Решение отлично описано здесь, но это то, что я сделал, чтобы решить его:

$ sudo apt-key list | grep -B1 PostgreSQL
$ sudo apt-key del ACCC4CF8
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

И теперь $ sudo apt-get updateбудет работать отлично!


1

Этот совет (от actionparsnip ) работал для меня:

Пытаться:

sudo fuser -vvv /var/lib/dpkg/lock
sudo rm /var/lib/apt/lists/lock
sudo cp -arf /var/lib/dpkg /var/lib/dpkg.backup
sudo cp /var/lib/dpkg/status-old /var/lib/dpkg/status
sudo cp /var/lib/dpkg/available-old /var/lib/dpkg/available
sudo rm -rf /var/lib/dpkg/updates/*
sudo rm -rf /var/lib/apt/lists
sudo rm /var/cache/apt/*.bin
sudo mkdir /var/lib/apt/lists
sudo mkdir /var/lib/apt/lists/partial
LANG=C;sudo apt-get clean
LANG=C;sudo apt-get autoclean
LANG=C;sudo apt-get --purge autoremove
LANG=C;sudo apt-get update -o APT::Cache-Limit=25165824
sudo dpkg --clear-avail
sudo dpkg --configure -a
LANG=C;sudo apt-get -f install
LANG=C;sudo apt-get --fix-missing install
LANG=C;sudo apt-get update -o APT::Cache-Limit=25165824 && sudo apt-get dist-upgrade

Найдено в:
https://answers.launchpad.net/ubuntu/+source/update-manager/+question/194077


1

Это может быть связано с проблемой кэширования HTTP-прокси. Если у вас есть один из тех, кто где-то на маршруте, как я, вы можете попросить Apt попросить его временно обойти кеш:

sudo apt-get update -o Acquire::http::No-Cache=True

-2

Вы можете использовать, launchpad-getkeysчтобы исправить это. Откройте терминал и введите:

sudo apt-get install launchpad-getkeys
sudo launchpad-getkeys

затем

sudo apt-get update
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.