Blog Linux Avante

Corrigir erros de repositório de chaves GPG ausentes (NO_PUBKEY)

8 de julho de 2019

Fix apt update GPG error NO_PUBKEY

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.

Solução 1: Correção rápida de NO_PUBKEY para um único repositório/chave

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:

Comandos para usar no terminal

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.

Solução 2: importar em lote todas as chaves GPG ausentes

Quando você está perdendo várias chaves públicas OpenPGP, você pode usar esta linha para importar todas de uma vez:

Comandos para usar no terminal

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)

Confira a versão original desse post em inglês
Propaganda
Blog Comments powered by Disqus.
Propaganda