W: GPG error: https://example.com stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 0123456789ABCDEF
#Что произошло
Каждый репозиторий подписывает файл InRelease. Чтобы apt поверил подписи, у него должен быть открытый ключ издателя. Ошибка NO_PUBKEY с шестнадцатеричным идентификатором значит, что нужный ключ не установлен или лежит не там, где указано. Раньше советовали apt-key adv --recv-keys — этот способ устарел и небезопасен, потому что ключ становился доверенным для всех репозиториев сразу. Современный способ: хранить ключ в отдельном файле в /etc/apt/keyrings/ и привязывать его к конкретному репозиторию параметром signed-by.
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Ключ получен по идентификаторуНужен файл ключа, а не только ID. | Ошибка содержит NO_PUBKEY и 16 символов. | Найдите официальную страницу репозитория и скачайте ключ оттуда. |
Ключ в формате ASCIIФайл .asc положили без преобразования. | apt не принимает. | Выполните gpg --dearmor или назовите файл .asc и укажите его в signed-by (apt поддерживает оба формата). |
| Репозиторий ранее работал, а теперь нетИздатель сменил ключ. | Ошибка EXPKEYSIG или NO_PUBKEY после обновления. | Скачайте новый ключ. |
Ключ в trusted.gpgУстаревшая схема. | Предупреждение о ключах в trusted.gpg. | Перенесите ключ в /etc/apt/keyrings и удалите старый. |
| Репозиторий прекращёнИздатель закрыл адрес. | Ошибки 404 вместе с GPG. | Закомментируйте строку источника. |
| Ручная правка правНет прав чтения файла ключа. | Ошибка доступа. | sudo chmod a+r /etc/apt/keyrings/*.gpg. |
#Порядок действий
- Определите конкретный неподписанный источникВ Debian/Ubuntu откройте терминал (Ctrl+Alt+T) и выполните
sudo apt update. Скопируйте полный адрес репозитория из строки с NO_PUBKEY и найдите соответствующую запись в/etc/apt/sources.listили/etc/apt/sources.list.d/. Не вводите строкуexample.comбуквально: это лишь условный пример адреса. Перед правкой сохраните исходный файл и проверьте, действительно ли источник вам нужен. - Найдите на сайте издателя ссылку на ключОткройте официальный сайт поставщика проблемного репозитория, адрес которого показан в ошибке apt, и найдите инструкцию установки для вашей версии Ubuntu/Debian. Проверьте полный отпечаток ключа и используемый домен; один краткий идентификатор NO_PUBKEY не достаточен для доверия. Если источник неизвестен или устарел, не скачивайте ключ: отключите его после проверки нужных пакетов и повторите
sudo apt update. - Установите только проверенный ключ издателяВместо случайных команд скачивания сначала найдите официальный ключ на сайте владельца репозитория и сверьте полный отпечаток по его независимой публикации. В Debian/Ubuntu используйте отдельный файл проверенного ключа с правами чтения для APT, обычно в
/etc/apt/keyrings/; путь и формат (.ascили.gpg) берите из инструкции издателя. Нельзя автоматически импортировать произвольный ключ из интернета, включатьtrusted=yesили обходить проверки APT. - Привяжите ключ в файле источникаВ файле проблемного источника из
/etc/apt/sources.list.d/проверьте наличие ссылкиsigned-by=на реально установленный проверенный ключ. Для формата deb822.sourcesиспользуется полеSigned-By:с корректным путём; точный синтаксис берите из официальной документации издателя. Не размещайте ключ для одного стороннего репозитория в глобальном доверенном хранилище и не добавляйтеtrusted=yes. После сохранения выполнитеsudo apt update. - Обновите индексОткройте терминал Debian/Ubuntu и выполните
sudo apt updateтолько после проверки происхождения ключа и записиSigned-Byлибо отключения ненужного стороннего репозитория. Дождитесь окончания, убедитесь, что исчезла ошибка подписи для названного адреса и другие источники обновились. Если сообщение осталось, запишите полный URL и код ключа; не используйтеtrusted=yesили разрешение небезопасных репозиториев. - Удалите дубликатыЕсли apt сообщает о дублирующемся источнике или конфликте
Signed-By, найдите записи одного и того же URL/выпуска черезgrep -Rв/etc/apt/sources.listи/etc/apt/sources.list.d/. Сохраните резервные копии затронутых файлов, затем отключите только подтверждённую лишнюю запись и выполнитеsudo apt update. Не удаляйте ключи и не назначайте случайный ключ всем репозиториям. - Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
Сверьте отпечаток ключа в выводе gpg --show-keys с тем, что опубликован на сайте издателя, а не с тем, что вам прислали в чате или на форуме.