LinuxFAQ.ru

apt no pubkey — как исправить ошибку недостающего GPG ключа в Linux

Ошибка NO_PUBKEY возникает при обновлении системы через apt, если пакетный менеджер не может проверить подпись репозитория из-за отсутствующего GPG ключа. Эта статья поможет системным администраторам и пользователям Linux быстро исправить проблему и добавить необходимые ключи.

Почему появляется ошибка NO_PUBKEY

  • Ключ GPG репозитория не был импортирован в систему, либо был удалён.
  • Репозиторий обновил свой ключ, а старый устарел или был аннулирован.
  • Настройки источников пакетов содержат репозиторий с неподписанным или недействительным ключом.
  • Проблемы с сетью или некорректная загрузка ключа из-за временной недоступности сервера.

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

  1. Определяем отсутствующий ключ
    Запустите обновление пакетов для выявления ошибки и получения номера ключа:

    sudo apt update

    Вывод будет содержать строку вида:

    NO_PUBKEY

    Запишите — это 16-значный идентификатор (например, 3B4FE6ACC0B21F32).

  2. Добавляем отсутствующий ключ через apt-key
    Этот метод подходит для Debian/Ubuntu и производных:

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 

    Команда скачает и добавит ключ из стандартного сервера. В выводе должно быть сообщение об успешном добавлении ключа.

    Примечание: В новых версиях apt-key помечен как устаревший, но пока работает.

  3. Добавляем ключ напрямую с помощью curl и apt-key add
    Если предыдущий способ не подошёл, попробуйте скачать ключ вручную:

    curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x" | sudo apt-key add -

    Этот вариант получает ключ через HTTP и добавляет его в систему.

  4. Для новых версий Ubuntu/Debian: импорт ключа в trusted.gpg.d
    apt-key устарел, рекомендуется добавлять ключи в отдельный файл:

    curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x" | sudo gpg --dearmor -o /usr/share/keyrings/.gpg

    После этого нужно отредактировать файл репозитория (обычно в /etc/apt/sources.list.d/), чтобы добавить:

    deb [signed-by=/usr/share/keyrings/.gpg] http://адрес-репозитория дистрибутив компоненты

    Так apt будет использовать конкретный ключ для проверки.

  5. Обновляем список пакетов
    После добавления ключа обновляем информацию о пакетах:

    sudo apt update

    Если ошибка исчезла — ключ установлен верно.

Альтернативные методы

  1. Добавление ключа с помощью apt-key adv и другого сервера
    Можно попробовать альтернативные keyserver, если ubuntu.com недоступен:

    sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv-keys 
  2. Использование команды gpg для импорта ключа вручную
    Скачайте ключ в файл и затем импортируйте:

    wget -qO - "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x" > keyfile.asc
    sudo gpg --dearmor keyfile.asc
    sudo mv keyfile.asc.gpg /usr/share/keyrings/.gpg
    rm keyfile.asc

    После чего укажите файл ключа в настройках репозитория (описано выше).

Проверка результата

После добавления ключа и обновления пакетов убедитесь, что ошибка больше не появляется:

sudo apt update

Если вывод не содержит ошибок связанных с NO_PUBKEY или подписью, значит проблема решена.

Как избежать в будущем

  • При добавлении новых репозиториев сразу импортируйте их GPG ключи.
  • Регулярно проверяйте актуальность ключей и обновляйте их при необходимости.
  • Используйте официальные зеркала и проверенные источники.
  • Для автоматизации используйте скрипты или инструменты управления конфигурациями (Ansible, Puppet и др.).

FAQ

Почему apt-key устарел?
Утилита apt-key считается устаревшей из-за соображений безопасности и рекомендуют использовать хранение ключей в /usr/share/keyrings/ с указанием signed-by.

Как узнать, какой ключ нужно добавить?
Это видно в сообщении ошибки NO_PUBKEY в выводе sudo apt update.

Можно ли пропустить проверку ключа?
Технично можно, но это сильно снижает безопасность, и делать это не рекомендуется.

Смотрите также: Настройка репозиториев и добавление ключей в Linux

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Свежие материалы