Debian Linux

Debian: GPG error NO_PUBKEY при apt update

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

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

«GPG error: NO_PUBKEY» при apt update означает, что у apt нет открытого ключа репозитория. Скачайте ключ в /etc/apt/keyrings (gpg --dearmor) и укажите signed-by в источнике; apt-key устарел и в Debian 12 не используется.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Пример

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

Сообщение
NO_PUBKEY

APT проверяет подпись каждого репозитория. Если ключа нет в связке (keyring) или он истёк, apt update выводит The following signatures couldn't be verified because the public key is not available: NO_PUBKEY XXXXXXXXXXXXXXXX. Репозиторий при этом отключается. В Debian 12 и Ubuntu 22.04+ рекомендуется хранить ключи в /etc/apt/keyrings/ и привязывать их к репозиторию через signed-by.

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

Возможная причинаКак узнатьЧто делать
Нет ключаКлюч репозитория не установлен.В сообщении NO_PUBKEY.Скачайте и добавьте ключ.
Устаревший apt-keyСтарый способ добавления не работает.apt-key пишет deprecated.Используйте signed-by.
Сменился ключРепозиторий обновил ключ, а у вас старый.Ошибка EXPKEYSIG после ранее рабочего.Скачайте новый ключ.
Неверный источникОпечатка в URL или ветка устарела.404, Release file отсутствует.Исправьте sources.list.

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

  1. Запомните идентификатор ключаВ терминале выполните sudo apt update и запишите URL источника, для которого написано NO_PUBKEY, и идентификатор отсутствующего ключа. Сравните полный отпечаток предлагаемого издателем ключа с его официальной документацией. Не загружайте ключ с произвольного сервера только по короткому ID: идентификатор не удостоверяет принадлежность ключа. Если источник больше не используется, лучше безопасно отключить его.
  2. Найдите официальный источник недостающего ключаПосле sudo apt update запишите точный адрес репозитория и идентификатор из NO_PUBKEY. Откройте только официальный сайт издателя этого репозитория и найдите руководство для вашей версии Debian/Ubuntu. Сравните полный отпечаток ключа с публикацией самого издателя: короткого идентификатора из сообщения недостаточно, чтобы признать произвольный ключ доверенным.
  3. Сохраните проверенный ключ в отдельный файлТолько после сверки отпечатка скачайте официальный ключ издателя в домашнюю папку обычным браузером или командой, указанной его документацией. Формат файла может быть .asc (текстовый ключ) либо .gpg (двоичный). Если издатель предоставляет именно текстовый .asc, установите gnupg штатным способом и преобразуйте скачанный файл командой gpg --dearmor -o repo.gpg repo.asc из каталога загрузки. Затем с правами администратора перенесите repo.gpg в /etc/apt/keyrings/, предварительно проверив его отпечаток; не запускайте curl URL | sudo ... с непроверенным адресом.
  4. Привяжите ключ только к конкретному репозиториюСделайте резервную копию файла источника в /etc/apt/sources.list.d/. Для записи формата .list укажите после deb параметр [signed-by=/etc/apt/keyrings/repo.gpg], подставляя фактическое имя проверенного файла. Для .sources используйте поле Signed-By: /etc/apt/keyrings/repo.gpg. Сохраняйте остальные поля адреса, выпуска и компонентов без изменений; не переписывайте системные источники Debian ради стороннего ключа. Если сомневаетесь в синтаксисе, остановитесь и сверяйтесь с инструкцией поставщика.
  5. Не получайте ключ с произвольного сервераСерверы ключей предоставляют ключ по идентификатору, но сами по себе не доказывают его принадлежность издателю. Не используйте их как способ угадать правильный ключ. При отсутствии проверенной ссылки на официальном сайте отключите только сомнительный сторонний репозиторий, сохранив копию его настройки, и обратитесь к поставщику программного обеспечения.
  6. Обновите спискиПосле того как проверенный ключ репозитория установлен с привязкой Signed-By либо ненужный источник отключён, в терминале Debian выполните sudo apt update. Убедитесь, что сообщение NO_PUBKEY для именно этого источника исчезло. Если ошибка повторяется, проверьте URL, права чтения ключа и корректность файла .list/.sources; не импортируйте ключ повторно из неизвестного сервера.
  7. Удалите ненужный репозиторийЕсли сторонний репозиторий больше не нужен, найдите его строку по URL через grep -R в /etc/apt/sources.list и /etc/apt/sources.list.d/. Сохраните копию соответствующего .list или .sources, затем отключите только этот источник через комментарий # или штатный параметр Enabled: no для .sources. Выполните sudo apt update и убедитесь, что ошибки нет. Не удаляйте системные репозитории Debian и не очищайте все ключи.

#Пример

/etc/apt/sources.list.d/example.list
Репозиторий с привязкой к ключу.
deb [arch=amd64 signed-by=/etc/apt/keyrings/example.gpg] https://repo.example.com/debian bookworm main
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

Если ошибка касается официальных репозиториев Debian, установите пакет debian-archive-keyring (sudo apt install debian-archive-keyring) и обновите систему. Подробнее о безопасной настройке — Debian Wiki: SecureApt.

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

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

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