Как я могу исправить ошибку GPG "NO_PUBKEY"?
Я добавил несколько дополнительных репозиториев с программой Software Sources. Но когда я перезагружаю базу данных пакета, я получаю сообщение об ошибке, подобное следующему:
W: Ошибка GPG: http://ppa.launchpad.net/ trusty InRelease: Следующие подписи не могут быть проверены, поскольку открытый ключ недоступен: NO_PUBKEY 8BAF9A6F
Я знаю, что могу это исправить используя apt-key
в терминале, согласно официальной документации Ubuntu. Но я бы хотел сделать это графически. Есть ли способ сделать это без использования терминала?
14 ответов
Безусловно, самый простой способ справиться с этим сейчас - это Y-PPA-Manager (который теперь интегрирует launchpad-getkeys
скрипт с графическим интерфейсом).
Чтобы установить его, сначала добавьте репозиторий webupd8 для этой программы:
sudo add-apt-repository ppa:webupd8team/y-ppa-manager
Обновите список программного обеспечения и установите Y-PPA-Manager:
sudo apt-get update sudo apt-get install y-ppa-manager
Запустите y-ppa-manager (т.е. введите
y-ppa-manager
затем нажмите клавишу ввода).Когда появится главное окно y-ppa-manager, нажмите "Дополнительно".
В списке расширенных задач выберите "Попробуйте импортировать все недостающие ключи GPG" и нажмите "ОК".
Вы сделали! Как говорится в диалоговом окне с предупреждением, когда вы начинаете операцию, это может занять довольно много времени (около 2 минут для меня) в зависимости от того, сколько у вас PPA и скорости вашего соединения.
Выполните следующие команды в терминале
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
вы говорите системе, что доверяете ключу, который вы импортируете для подписания программного обеспечения, которое будет использовать ваша система. Не делайте этого, если вы не уверены, что ключ действительно является ключом дистрибьютора пакетов.
Это происходит, когда у вас нет подходящего открытого ключа для хранилища.
Чтобы решить эту проблему, используйте эту команду:
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 9BDB3D89CE49EC21
который получает ключ с сервера ключей Ubuntu. И тогда это:
gpg --export --armor 9BDB3D89CE49EC21 | sudo apt-key add -
который добавляет ключ к доверенным ключам apt.
Вам необходимо получить и импортировать ключ.
Чтобы получить ключ от PPA, посетите страницу панели запуска PPA. На каждой странице PPA в Launchpad вы найдете эту ссылку (2), после нажатия на "Технические подробности об этом PPA" (1):
Перейдите по ней и нажмите на ссылку идентификатора ключа (3):
Сохраните страницу, это ваш ключевой файл.
Теперь пришло время импортировать это:
Applications > Software Center
,Edit > Software sources...
,- Введите ваш пароль,
- Перейти к
Authentication
вкладку и нажмите наImport Key File...
, в конце концов - Выберите сохраненный ключевой файл и нажмите
OK
,
apt может обрабатывать только 40 ключей в /etc/apt/trusted.gpg.d . 41 ключ, и вы получите ошибку GPG "открытый ключ не найден", даже если вы пройдете все шаги, чтобы добавить отсутствующий ключ (и).
Проверьте, есть ли в этом файле неиспользуемые ключи от ppa, которые вы больше не используете. Если все они используются, рассмотрите возможность удаления некоторых файлов ppa вместе с соответствующими ключевыми файлами в /etc/apt/trusted.gpg.d
Кроме того, используя
sudo apt-key adv
Считается угрозой безопасности и не рекомендуется, поскольку вы "подрываете всю концепцию безопасности, поскольку это не безопасный способ получения ключей по разным причинам (например: hkp - это протокол открытого текста, могут быть подделаны короткие и даже длинные ключи,…)". http://ubuntuforums.org/showthread.php?t=2195579
Я считаю, что правильный способ добавить отсутствующие ключи (например, 1ABC2D34EF56GH78)
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 1ABC2D34EF56GH78
gpg --export --armor 1ABC2D34EF56GH78 | sudo apt-key add -
В PPA -файле WebUpd8 упакован крошечный скрипт, который я буду ссылать как одну загрузку.deb, так что вам не нужно добавлять весь PPA -файл, который автоматически импортирует все недостающие ключи GPG.
Скачайте и установите Launchpad-getkeys (игнорируйте ~ natty в его версии, он работает со всеми версиями Ubuntu от Karmic вплоть до Oneiric). После установки откройте терминал и введите:
sudo launchpad-getkeys
Если вы находитесь за прокси-сервером, все немного сложнее, поэтому посмотрите это для получения дополнительной информации.
Эта ошибка также может возникать, когда файл списка APT от PPA указывает на локальную связку ключей, например
deb [signed-by=/usr/share/keyrings/SOMETHING.gpg] https://download.something.org/something something/
И хотя этот файл может существовать в вашей системе (возможно, загруженный с помощью предыдущей команды), он может быть нечитаемым из-за отсутствия разрешений. Я только что исправил эту ошибку, запустив
chmod 644 /usr/share/keyrings/*
после получения файла связки ключей. Основная проблема заключалась в использованииsudo
когда я уже был пользователем root. Действительно странно, так как все это в любом случае является root, и нигде не было сообщения об ошибке разрешения доступа... но это исправило
Убедитесь, что у вас есть 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
Я столкнулся с той же проблемой при установке Heroku. Ссылка ниже решила мою проблему -
http://naveenubuntu.blogspot.in/2011/08/fixing-gpg-keys-in-ubuntu.html
После исправления 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
Источник - Ссылка, чтобы решить это
В целом, следующий метод должен работать для каждого хранилища. Прежде всего, с помощью поисковой системы выполните поиск текста на веб-сайте поставщика программы, который выглядит следующим образом:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.1 (GNU/Linux)
[...]
-----END PGP PUBLIC KEY BLOCK-----
Такой текст, например, отображается на http://deb.opera.com/. Скопируйте отрывок и вставьте его в пустой файл, созданный на рабочем столе. Это приводит к ключевому файлу.
Затем продолжите импорт ключа:
- Приложения> Центр программного обеспечения
- Правка> Исходники программного обеспечения..., введите пароль
- На вкладке "Аутентификация" нажмите "Импортировать файл ключа..."
- Выберите сохраненный ключевой файл и нажмите "ОК".
Теперь вы можете удалить ранее созданный ключевой файл.
Хорошо! Я наконец нашел способ!
Я протестировал все методы, чтобы исправить ошибку 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 вручную (слишком много): http://www.unixmen.com/fix-w-gpg-error-no_pubkey-ubuntu/
снова запустите sudo apt-get update и наконец все отлично работает! Танки!
Источник: пост № 17 на https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1263540
Обновленная версия (Ubuntu 22.04 LTS)
Поскольку apt-key устарел, и вы хотите использовать/etc/apt/trusted.gpg.d/
, вы можете использовать
sudo gpg --keyserver pgpkeys.mit.edu --recv-key <PUBKEY>
sudo gpg -a --export <PUBKEY> | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/<target name>.gpg
<PUBKEY>
похож ли отпечаток пальца на 8 символов210976F2
и<target name>
— это имя по вашему выбору, под которым вы узнаете этот ключ.
У меня была такая же проблема с клиентом DynDNS Updater.
Оказывается, это просто истек срок действия ключей.
Переустановка программного обеспечения (загрузка нового .deb
с веб-сайта, а затем с помощью программного центра для переустановки) устранена проблема.
Сообщение об ошибке для справки:
W: GPG error: http://cdn.dyn.com stable/ Release: The following signatures were invalid: KEYEXPIRED 141943.......
2021 август. Это то, что сработало для меня.
cd /etc/apt/trusted.gpg.d
sudo rm -R *
sudo apt-get update
Последняя строка вызовет ошибки отсутствия ключей.
Затем вам нужно будет вручную установить каждый из ключей, перечисленных в ошибках, например, если ошибка говорит о том, что ваш отсутствует
PUB_KEY
является
9BDB3D89CE49EC21
,
Вы можете вручную добавить ключ с помощью команды
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 9BDB3D89CE49EC21
Повторно запустите обновление sudo apt-get
Повторите процесс для нового ключа, вызванного ошибкой.
Скажите, был ли новый ключ
3BDB3D89CE49EC24
, Просто вручную добавьте ключ с помощью команды
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3BDB3D89CE49EC24
Повторно запустите sudo apt-get update и повторяйте процесс, пока все ошибки не исчезнут.
Затем вернитесь на сайт пакета, который вы пытались установить, и повторите процесс установки.
В моем случае ошибка появлялась, когда я пытался установить
Sublime Text
Выполнение вышеуказанного и возвращение к руководству по установке Sublime здесь решило проблемы.
Не забудьте проголосовать, если это сработает для вас. И это должно сделать