Иногда после подключения сторонних репозиториев при 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.