База знаний по Open Source
Yandex поиск по всему сайту
Авторизация

Иногда после подключения сторонних репозиториев при apt update или при установке пакетов в Ubuntu возникает ошибка типа

The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ХХХХХХХХХХХХ

где ХХХХХХХХХХХХ — конкретный публичный ключ.

Достаточно часто такая ситуация возникает после добавления нового репозитория в /etc/apt/sources.list с последующей попыткой установить пакет из него пакет.

Причина простая и следует из текста сообщения — отсутствие в системе публичного GnuPG-ключа репозитория, из которого вы пытаетесь инсталлировать пакет (который, в свою очередь, подписан данным ключом).

Иногда может появляться ошибка типа «ключ устарел». Тогда нужно найти хэш нового ключа на сайте производителя. У меня несколько раз такое было с openVPN.

Хеш нужного ключа указывается в тексте ошибки после NO_PUBKEY вместо  ХХХХХХХХХХХХХ. Именно его и надо добавить в базу apt вашей системы для успешной установки пакета.

Чтобы это сделать, требуется выполнить команды:

su
gpg --keyserver keyserver.ubuntu.com --recv ХХХХХХХХХХХХ
gpg --export --armor ХХХХХХХХХХХХ | sudo apt-key add -

Здесь вместо ХХХХХХХХХХХХ нужно подставить значение того GPG-ключа, который вы хотите добавить в свою базу.

keyserver.ubuntu.com — это сервер ключей для ubuntu, где ищется ключ с key-id ХХХХХХХХХХХХ. Серверов ключей достаточно много и в интернете можно встреть другие сервера. Но этот наиболее полный и практически все открытые ключи для программ ubuntu можно найти здесь.

После успешного экспорта правильного GPG-ключа в базу системы нужный пакет должен установиться без проблем.

Здесь необходимо отметить — команда su обязательна! sudo не подойдёт и вы получите сообщение типа :

gpg: ВНИМАНИЕ: небезопасный владелец файла конфигурации `/home/user/.gnupg/gpg.conf'

Все эти действия нужно проводить только от root.