При установке пакетов в Linux, с помощью команды apt-get иногда возникает ошибка вида «W: GPG error: [..] Release: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY [..]». Обычно такая ситуация возникает после добавления нового репозитория в /etc/apt/sources.list с последующей попыткой установить пакет из этого репозитория.
Причина происхождения проблемы — отсутствие в вашей системе публичного GnuPG-ключа репозитория, из которого вы пытаетесь инсталлировать пакет (который, в свою очередь, подписан данным ключом). Хеш нужного ключа указывается в тексте ошибки после NO_PUBKEY (т.е. на месте второго «[..]»). Именно его и надо добавить в базу apt вашей системы для успешной установки пакета.
Чтобы это сделать, требуется выполнить две команды:
gpg --keyserver subkeys.pgp.net --recv KEY gpg --export --armor KEY | sudo apt-key add -
Здесь вместо KEY нужно подставить значение того GPG-ключа, который вы хотите добавить в свою базу. Так, например, если вы получали ошибку NO_PUBKEY F120156012B83718, вам потребуется выполнить следующие команды:
gpg --keyserver subkeys.pgp.net --recv ADB4438160A655EF gpg --export --armor ADB4438160A655EF| sudo apt-key add -
После успешного экспорта GPG-ключа в свою базу вы можете повторить попытку установить нужный вам пакет.
——
есть способ проще и элегантнее, возможно пригодится
sudo apt-get update
дождитесь строк типа
W: Ошибка: deb.opera.com unstable Release: Следующие подписи не могут быть проверены, так как недоступен открытый ключ: NO_PUBKEY ADB4438160A655EF
ADB4438160A655EF — это КЛЮЧ, он разный для разных репозитариев
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com ADB4438160A655EF
——
если у вас прокси в сети, то
sudo apt-key adv --recv-keys --keyserver-options http-proxy=«адрес_прокси: порт» --keyserver keyserver.ubuntu.com ADB4438160A655EF
——
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com `sudo apt-get update 2>&1 | grep -o '[0-9A-Z]\{16\}$' | xargs`