No Wiki Debian sobre SecureAPT , descobri que eu deveria remover a linha contendo non-us
de /etc/apt/sources.list.
Eu realmente fiz isso e funcionou.
Enquanto atualizo meus pacotes em um sistema baseado no Debian por um
sudo apt-get update
Eu recebi essa mensagem de erro:
Reading package lists... Done
W: GPG error: ftp://ftp.fr.debian.org stable/non-US Release:
The following signatures were invalid: KEYEXPIRED 1138684904
O que devo fazer para corrigir isso?
No Wiki Debian sobre SecureAPT , descobri que eu deveria remover a linha contendo non-us
de /etc/apt/sources.list.
Eu realmente fiz isso e funcionou.
Para encontrar as chaves do repositório expiradas e seus IDs, use apt-key
da seguinte forma:
LANG=C apt-key list | grep expired
Você receberá um resultado semelhante ao seguinte:
pub 4096R/BE1DB1F1 2011-03-29 [expired: 2014-03-28]
O ID da chave é o bit depois do /
, ou seja, BE1DB1F1
, neste caso.
Para atualizar a chave, execute
sudo apt-key adv --recv-keys --keyserver keys.gnupg.net BE1DB1F1
Nota: A atualização da chave obviamente não funcionará se o mantenedor do pacote (ainda) não tiver carregado uma nova chave. Nesse caso, há pouco que você pode fazer além de contatar o mantenedor, arquivar um bug contra sua distribuição, etc.
Um forro para atualizar todas as chaves expiradas: (graças a @ryanpcmcquen)
for K in $(apt-key list | grep expired | cut -d'/' -f2 | cut -d' ' -f1); do sudo apt-key adv --recv-keys --keyserver keys.gnupg.net $K; done
Você precisa pegar a chave mais nova e adicioná-la, e nesse ponto o apt irá detectá-la e não reclamar. Isso normalmente não deveria acontecer, mas às vezes acontece. O que você realmente precisa é saber o código hexadecimal da chave que você precisa adicionar; uma vez que você tem isso, é muito descendente de lá.
Alguns exemplos:
adicionando chaves para backports : as primeiras linhas são o que você procura, embora seja necessário ter a chave desejada.
Eu tive um erro semelhante, mas o problema estava na hora do sistema. O ano foi 1961:)
Eu corrigi a data / hora do sistema e depois disso posso atualizar sem um pro
Também pode acontecer quando a data não está correta.
Verifique a data com
date
Se estiver configurado incorretamente, faça o seguinte para definir a sincronização automática de fuso horário e data.
apt-get install ntp ntpdate && service ntp stop
dpkg-reconfigure tzdata
ntpdate-debian
service ntp start
Uma causa altamente improvável, mas ocasionalmente possível, para esse erro é se você tiver adicionado a mesma chave duas vezes com datas de expiração diferentes. Você provavelmente saberia ter feito isso para que essa resposta seja relevante para você.
Isso pode acontecer, como aconteceu comigo, ao hospedar seu próprio repositório com suas próprias chaves. Se você, quando a chave estiver prestes a expirar, simplesmente estenderá seu tempo de vida em vez de alterá-lo, e se você instalou a chave original usando pré-configuração, mas a chave atualizada usando um pacote deb, a chave antiga estará em /etc/apt/trusted.gpg
, enquanto o novo acaba como um arquivo separado em /etc/apt/trusted.gpg.d/
. A chave antiga irá sombrear a nova, que será completamente ignorada por apt-key
. Remova a chave antiga executando gpg --keyring /etc/trusted.gpg --delete-keys <keyid>
e sua nova chave será detectada.
Esta é uma configuração de canto não padrão, mas espero que minha resposta possa economizar alguma confusão caso alguém encontre esse problema pela mesma razão que eu.
Um oneliner mais simples:
for key in $(sudo apt-key list | awk -v FS='[ /:]+' '/expire[sd]/ {print $3}'); do sudo apt-key adv --recv-keys --keyserver keys.gnupg.net $key; done
Eu sinto que se você está fazendo coisas como usar cut
mais de uma vez, existe uma ferramenta melhor. (Além disso, criei isso com base em uma pergunta diferente .)
Você não precisa fazer nada. É apenas um aviso, você pode ver isso no prefixo W:
.