Você pode ver um erro de chave pública GPG ausente ("NO_PUBKEY") no Debian, Ubuntu ou Linux Mint ao executar apt update
/apt-get update
. Isso pode acontecer quando você adiciona um repositório e se esquece de adicionar sua chave pública, ou talvez tenha ocorrido um erro temporário do servidor de chaves ao tentar importar a chave GPG.
Ao executar um apt update
/apt-get update
, ou tentar atualizar as fontes de software usando alguma ferramenta GUI, o apt irá reclamar de não ser capaz de baixar todos os índices do repositório, mostrando erros como este:
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://ppa.launchpad.net/linuxuprising/apps/ubuntu bionic InRelease: The following signatures couldn\'t be verified because the public key is not available: NO_PUBKEY EA8CACC073C3DB2A
W: Failed to fetch http://ppa.launchpad.net/linuxuprising/apps/ubuntu/dists/bionic/InRelease The following signatures couldn\'t be verified because the public key is not available: NO_PUBKEY EA8CACC073C3DB2A
W: Some index files failed to download. They have been ignored, or old ones used instead.
Este é apenas um exemplo. Este erro pode ocorrer não apenas com os repositórios do Launchpad PPA, mas em qualquer repositório, como os fornecidos pelo Google, Vivaldi ou Node.js, etc.
A mensagem de erro diz que o repositório não está atualizado e os arquivos de índice anteriores serão usados. Isso significa que você não receberá atualizações desse repositório, então você deve importar a chave GPG pública para corrigir esse problema.
Veja como corrigir facilmente o erro The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ...
. Ele deve funcionar no Debian, Ubuntu, Linux Mint, Pop!_OS, elementaryOS e qualquer outra distribuição Linux baseada em Debian ou Ubuntu.
Se estiver faltando apenas uma chave de repositório GPG pública, você pode executar este comando em seu sistema Ubuntu/Linux Mint/Pop!_OS/Debian para corrigi-lo:
sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net:80 --recv-keys THE_MISSING_KEY_HERE
Você terá que substituir THE_MISSING_KEY_HERE
pela chave GPG ausente. A chave é mostrada no log de atualização do apt update/apt-get, após NO_PUBKEY. Por exemplo, na mensagem de erro que postei acima, a chave GPG ausente que deve ser usada neste comando é EA8CACC073C3DB2A
.
Consulte também: Como corrigir 'Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable)
Quando você está perdendo várias chaves públicas OpenPGP, você pode usar esta linha para importar todas de uma vez:
sudo apt update 2>&1 1>/dev/null | sed -ne 's/.*NO_PUBKEY //p' | while read key; do if ! [[ ${keys[*]} =~ "$key" ]]; then sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net:80 --recv-keys "$key"; keys+=("$key"); fi; done
Não há necessidade de alterar nenhuma parte do comando, apenas execute-o como está. Isso também funciona para corrigir uma única chave GPG ausente, mas é um pouco redundante. No entanto, ele funciona com qualquer número de chaves GPG ausentes.
O comando executa sudo apt update
para atualizar suas fontes de software e detectar chaves GPG ausentes, e importa cada chave ausente usando hkp://pool.sks-keyservers.net:80
como seu servidor. Este servidor é sincronizado continuamente com muitos outros servidores, portanto, ele deve ter chaves atualizadas. Você pode usar outro servidor, se desejar.
O comando também usa uma matriz para armazenar chaves GPG ausentes para as quais já importamos a chave. Sem isso, o comando de importação de chave seria executado duas vezes para cada chave ausente.
Você também pode estar interessado em: Como fazer uma chave PGP no Linux usando uma GUI (e publicá-la)
Esse post foi traduzido do site LinuxUprising.com pela rtland.team.
Confira a versão original desse post em inglês:
Fix Missing GPG Key Apt Repository Errors (NO_PUBKEY)