Ubuntu Linux

Ubuntu: GPG error NO_PUBKEY при apt update

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

Добавьте ключ репозитория в /etc/apt/keyrings и укажите signed-by.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Современный способ
  5. Если известен только идентификатор
  6. Прочие причины

#Что означает ошибка

Сообщение
NO_PUBKEY

GPG error: ... NO_PUBKEY XXXXXXXX при apt update означает, что в системе нет публичного ключа репозитория, или ключ устарел. Репозиторий при этом не обновляется, а установка пакетов из него невозможна.

Метод apt-key объявлен устаревшим, сегодня ключи хранят в /etc/apt/keyrings.

Добавьте ключ репозитория в /etc/apt/keyrings и укажите signed-by.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Нет ключаРепозиторий.Проявляется как «NO_PUBKEY» или близкий по смыслу сбой.Добавьте.
Устарел ключПодпись.Проявляется как «NO_PUBKEY» или близкий по смыслу сбой.Обновите.
Сторонний PPAКлюч.Проявляется как «NO_PUBKEY» или близкий по смыслу сбой.Импортируйте.
ВремяСистемное.Проявляется как «NO_PUBKEY» или близкий по смыслу сбой.Исправьте.

#Пошаговое решение

  1. Найдите идентификатор ключаВ терминале запустите sudo apt update и выпишите весь фрагмент строки NO_PUBKEY, включая идентификатор и URL репозитория выше неё. Определите, относится ли проблема к официальному архиву Ubuntu или стороннему источнику. Не копируйте ключ с произвольного сервера по одному номеру: злоумышленник может выдать другой ключ с совпадающим кратким идентификатором. Проверяйте полный отпечаток на официальном сайте поставщика.
  2. Скачайте ключ разработчикаВ выводе sudo apt update выпишите URL проблемного стороннего репозитория и его издателя. Перейдите на официальный сайт этого издателя и найдите инструкцию установки его ключа вместе с полным отпечатком. Перед выполнением какой-либо команды загрузки сравните отпечаток. Не вводите буквально пример curl ... | gpg --dearmor и не используйте ключ из случайной статьи: без конкретного проверенного URL такая команда непригодна. Если источник не нужен, безопаснее отключить только его с резервной копией файла .list или .sources.
  3. Сохраните в /etc/apt/keyringsДля официального стороннего репозитория предпочтительно использовать отдельный файл ключа в /etc/apt/keyrings либо /usr/share/keyrings, как предписывает его издатель. Сначала проверьте полный отпечаток ключа из официальной инструкции, затем установите его согласно документации разработчика; формат может быть ASCII .asc или бинарный .gpg. Не копируйте случайный ключ под названием trusted.gpg, не используйте apt-key add и не отключайте проверку подписи.
  4. Укажите signed-byОткройте файл источника проблемного репозитория в /etc/apt/sources.list.d/ или /etc/apt/sources.list через sudoedit и сверьте синтаксис с официальной инструкцией издателя. Для записи вида deb [signed-by=/etc/apt/keyrings/имя-ключа.gpg] https://официальный-адрес выпуск компонент путь должен указывать на реально скачанный и проверенный ключ; имена и адрес берутся с сайта поставщика, а не из примера. Сохраните файл и повторите sudo apt update. При сомнении лучше временно отключить сторонний источник.
  5. Обновите индексПосле восстановления ключа только для доверенного источника либо его отключения откройте терминал Ubuntu и выполните sudo apt update. Дождитесь окончания и убедитесь, что пропала конкретная строка NO_PUBKEY или repository is not signed, а остальные репозитории обновляются. Если ошибка осталась, сравните полный адрес источника и поле Signed-By с официальной инструкцией; не отключайте проверку подписи APT.

#Современный способ

Скачайте ключ в отдельный файл: sudo mkdir -p /etc/apt/keyrings && curl -fsSL https://example.com/key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/example.gpg. В файле репозитория /etc/apt/sources.list.d/example.list укажите deb [signed-by=/etc/apt/keyrings/example.gpg] URL дистрибутив компонент. Затем sudo apt update.

#Если известен только идентификатор

Получите ключ с сервера: sudo gpg --keyserver keyserver.ubuntu.com --recv-keys XXXXXXXX и экспортируйте: sudo gpg --export XXXXXXXX | sudo tee /etc/apt/trusted.gpg.d/example.gpg >/dev/null. Старый вариант sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys XXXXXXXX работает, но устарел.

#Прочие причины

Ошибка «repository is not signed» или «expired key» — ключ у разработчика обновился, скачайте новый с их сайта. Ошибка «Release file is not valid yet» — неверное время системы: timedatectl. Для устаревших PPA выполните sudo ppa-purge или удалите файл в sources.list.d. Проверьте, что репозиторий поддерживает ваш релиз (lsb_release -cs).

Linux · Терминал (Bash)КомандаНужен sudo
Диагностика: сначала выявите точный репозиторий и его ошибку подписи. Не загружайте ключи из произвольных URL. Установку подписанного ключа и параметра Signed-By выполняйте только по официальной инструкции владельца этого репозитория, предварительно проверив его адрес и отпечаток ключа.
grep -R -h -E "^(deb |URIs:|Signed-By:)" /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null
sudo apt update

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.