Как исправить ошибку GPG «NO_PUBKEY»?

298

Я добавил несколько дополнительных репозиториев в программу Software Sources. Но когда я перезагружаю базу данных пакета, я получаю сообщение об ошибке:

W: GPG error: http://ppa.launchpad.net trusty InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 8BAF9A6F

Я знаю, что могу исправить это, используя apt-key в терминале, согласно официальной документации Ubuntu. Но мне хотелось бы сделать это графически. Есть ли способ сделать это без использования терминала?

    
задан Agmenor 13.11.2010 в 20:27
источник

11 ответов

191

На сегодняшний день самым простым способом справиться с этим является Y-PPA-Manager (который теперь интегрирует скрипт launchpad-getkeys с графическим интерфейсом).

  1. Чтобы установить его, сначала добавьте репозиторий webupd8 для этой программы:

    sudo add-apt-repository ppa:webupd8team/y-ppa-manager
    
  2. Обновите свой список программ и установите Y-PPA-Manager:

    sudo apt-get update
    sudo apt-get install y-ppa-manager
    
  3. Запустите y-ppa-manager (т. е. введите y-ppa-manager , затем нажмите клавишу ввода).

  4. Когда появится главное окно y-ppa-manager, нажмите «Дополнительно».

  5. В списке расширенных задач выберите «Попробуйте импортировать все отсутствующие ключи GPG» и нажмите «ОК».

    Вы закончили! Как предупреждает диалог, когда вы начинаете операцию, это может занять некоторое время (около 2 минут для меня) в зависимости от того, сколько PPA у вас есть и скорость вашего соединения.

ответ дан monotasker 04.12.2013 в 15:52
источник
438

Выполните следующие команды в терминале

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <PUBKEY>

где <PUBKEY> - ваш отсутствующий открытый ключ для репозитория, например. 8BAF9A6F .

Затем обновите

sudo apt-get update

МЕНЬШИЙ МЕТОД:

sudo gpg --keyserver pgpkeys.mit.edu --recv-key  <PUBKEY>
sudo gpg -a --export <PUBKEY> | sudo apt-key add -
sudo apt-get update

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

    
ответ дан karthick87 28.11.2010 в 18:49
38

Это происходит, когда у вас нет подходящего открытого ключа для репозитория.

Для решения этой проблемы используйте следующую команду:

gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 9BDB3D89CE49EC21

, который извлекает ключ из сервера ключей ubuntu. И затем это:

gpg --export --armor 9BDB3D89CE49EC21 | sudo apt-key add -

, который добавляет ключ к доверенным ключам apt.

Решение можно найти здесь и amp; здесь и amp; здесь .

    
ответ дан Pedram 27.03.2011 в 22:31
32

Вам нужно получить и импортировать ключ.

Чтобы получить ключ от PPA, перейдите на страницу Launchpad PPA. На каждой странице PPA на Launchpad вы найдете эту ссылку (2), после нажатия «Технические детали об этом PPA» (1):

Следуйте за ним и нажмите на ссылку ID ключа (3):

Сохраните страницу, это ваш файл ключа.

Теперь пришло время импортировать его:

  • Applications > Software Center ,
  • Edit > Software sources... ,
  • Введите свой пароль,
  • Перейдите на вкладку Authentication и нажмите Import Key File... , наконец
  • Выберите сохраненный ключевой файл и нажмите OK .

Вот и все.

    
ответ дан htorque 13.11.2010 в 21:04
11

apt может обрабатывать только 40 ключей в файле /etc/apt/trusted.gpg.d. 41, и вы получите ошибку GPG «без открытого ключа», даже если вы пройдете все шаги, чтобы добавить отсутствующие ключи.

Проверьте, нет ли в этом файле неиспользуемых ключей от ppa (s), которые вы больше не используете. Если все они используются, рассмотрите возможность удаления некоторых ppa (s) вместе с соответствующими ключевыми файлами в файле /etc/apt/trusted.gpg.d

Кроме того, используя

sudo apt-key adv

Считается угрозой безопасности и не рекомендуется , поскольку вы " подрываете концепцию всей безопасности, поскольку это не безопасный способ получения ключей по разным причинам (например: hkp является протокол открытого текста, короткие и даже длинные ключевые слова могут быть подделаны, ...) ". Ссылка

Я считаю, что правильный способ добавления отсутствующих ключей (например, 1ABC2D34EF56GH78) -

gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 1ABC2D34EF56GH78
gpg --export --armor 1ABC2D34EF56GH78 | sudo apt-key add -
    
ответ дан mchid 07.08.2014 в 22:33
8

В PPU WebUpd8 есть крошечный скрипт, который я свяжу в качестве одной загрузки .deb, поэтому вам не нужно добавлять весь PPA, который автоматически импортирует все отсутствующие ключи GPG.

Загрузите и установите Launchpad-getkeys (игнорируйте ~ natty в своей версии, он работает со всеми версиями Ubuntu от Karmic вплоть до Oneiric). После установки откройте терминал и введите:

sudo launchpad-getkeys

Если вы находитесь за прокси-сервером, все немного сложнее, поэтому см. для получения дополнительной информации

    
ответ дан Alin Andrei 05.06.2011 в 20:15
4

Я столкнулся с той же проблемой при установке Heroku. Ссылка ниже решила мою проблему -

Ссылка

После исправления проблемы NO_PUBKEY проблема ниже

W: GPG error: xhttp://toolbelt.heroku.com ./ Release: The following signatures were invalid: BADSIG C927EBE00F1B0520 Heroku Release Engineering <release@heroku.com>

Чтобы исправить это, я выполнил следующие команды в терминале:

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

Источник - Ссылка для его решения

    
ответ дан dennyac 30.01.2013 в 17:12
4

Убедитесь, что у вас установлено apt-transport-https :

dpkg -s apt-transport-https > /dev/null || bash -c "sudo apt-get update; 
sudo apt-get install apt-transport-https -y" 

Добавить репозиторий:

curl https://repo.skype.com/data/SKYPE-GPG-KEY | sudo apt-key add - 
echo "deb [arch=amd64] https://repo.skype.com/deb stable main" | sudo tee /etc/apt/sources.list.d/skype-stable.list 

Установите Skype для Linux:

sudo apt-get update 
sudo apt-get install skypeforlinux -y

Источник: Ссылка

    
ответ дан Eduardo Cuomo 27.05.2017 в 20:00
3

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

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.1 (GNU/Linux)
[...]
-----END PGP PUBLIC KEY BLOCK-----

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

Затем продолжайте импорт ключа:

  • Приложения > Sofware Center
  • Изменить > Софтверные источники ..., введите пароль
  • Вкладка «Проверка подлинности», нажмите «Импортировать файл ключа ...»
  • Выберите сохраненный ключевой файл и нажмите «ОК».

Теперь вы можете удалить ранее созданный файл ключа.

    
ответ дан Agmenor 13.11.2010 в 21:43
2

Хорошо! Я наконец нашел путь!

Я протестировал все методы, чтобы исправить ошибку GPG NO_PUBKEY , и ничто не работает для меня.

Я удалил все содержимое папки /etc/apt/trusted.gpg.d

cd /etc/apt/trusted.gpg.d
sudo rm -R *
sudo apt-get update

И я использую метод Y-PPA-Manager , потому что мне слишком ленив, чтобы создать все pubkey вручную (слишком много): Ссылка

Запустите sudo apt-get update снова и окончательно все отлично работает сейчас! Танки!

Исходный код: post # 17 на Ссылка

    
ответ дан NeurOSick 08.04.2015 в 13:36
1

У меня была такая же проблема с клиентом Updater DynDNS.

Оказывается, это были только истекшие ключи.

Переустановка программного обеспечения (загрузка нового .deb с веб-сайта, а затем использование программного центра для переустановки) устранила проблему.

Сообщение об ошибке для справки:

W: GPG error: http://cdn.dyn.com stable/ Release: The following signatures were invalid: KEYEXPIRED 141943.......
    
ответ дан Cranky 08.01.2015 в 16:53