Mais cedo ou mais tarde, o apt update no seu VPS Linux Infrawire falha com uma parede de texto vermelho: uma chave GPG em falta, um repositório que já não existe ou um bloqueio que não desaparece. Cada erro tem uma causa clara e uma correção curta.
Este guia percorre os problemas mais frequentes no Ubuntu 24.04 e no Debian 12, da correção menos invasiva à mais drástica.
📋 Pré-requisitos
- Um VPS com Ubuntu 24.04 ou Debian 12
- Acesso SSH root (o IP e a palavra-passe root estão na sua área de cliente)
- Noções básicas de linha de comandos
1. Localize primeiro as fontes
Antes de corrigir seja o que for, saiba onde os seus repositórios estão definidos:
Bashcat /etc/os-release cat /etc/apt/sources.list ls -l /etc/apt/sources.list.d/ apt update 2>&1 | grep -E '^(Err|W:|E:)'
No Ubuntu 24.04 os repositórios principais estão em /etc/apt/sources.list.d/ubuntu.sources, no formato deb822 (ficheiros .sources). O Debian 12 ainda usa o formato clássico de uma linha em /etc/apt/sources.list, e os dois formatos coexistem.
Bash# Exemplo de entrada deb822 (Ubuntu 24.04) Types: deb URIs: http://archive.ubuntu.com/ubuntu/ Suites: noble noble-updates noble-backports Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
2. Erros de bloqueio e dpkg interrompido
A mensagem Could not get lock /var/lib/dpkg/lock-frontend significa que outro processo está a usar o apt, muitas vezes o unattended-upgrades logo após o arranque. Verifique antes de agir:
Bashps aux | grep -E 'apt|dpkg|unattended' | grep -v grep lsof /var/lib/dpkg/lock-frontend
Se houver um processo a correr, espere alguns minutos. Só apague um ficheiro de bloqueio se nada o estiver a usar (arriscado se se enganar) e depois repare o estado interrompido:
Bashrm -f /var/lib/dpkg/lock-frontend /var/lib/dpkg/lock /var/cache/apt/archives/lock dpkg --configure -a apt --fix-broken install
A mensagem dpkg was interrupted, you must manually run 'dpkg --configure -a' resolve-se precisamente com o primeiro destes comandos.
3. NO_PUBKEY e chaves GPG em falta
O erro The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ABCD1234 indica que um repositório de terceiros não tem chave de confiança. Não use o obsoleto apt-key: guarde a chave em /etc/apt/keyrings/ e referencie-a com signed-by.
Bashinstall -d -m 0755 /etc/apt/keyrings curl -fsSL https://example.com/repo/key.gpg | gpg --dearmor -o /etc/apt/keyrings/example.gpg chmod 644 /etc/apt/keyrings/example.gpg echo 'deb [signed-by=/etc/apt/keyrings/example.gpg] https://example.com/repo stable main' > /etc/apt/sources.list.d/example.list apt update
Use o URL da chave indicado na documentação oficial do software e instale primeiro curl gnupg se faltarem. Se o erro disser respeito ao próprio arquivo do Ubuntu ou do Debian, reinstale o pacote de chaves: apt install --reinstall ubuntu-keyring ou debian-archive-keyring.
4. Repositórios de terceiros quebrados
Um erro 404 Not Found ou does not have a Release file num PPA ou repositório de fabricante costuma significar que deixou de suportar a sua versão. Desative-o em vez de o apagar:
Bash# Ficheiro .list clássico: renomeá-lo mv /etc/apt/sources.list.d/broken.list /etc/apt/sources.list.d/broken.list.disabled # Ficheiro .sources deb822: adicionar esta linha dentro do bloco Enabled: no
Execute apt update outra vez. O erro desaparece e os pacotes já instalados continuam a funcionar.
5. Erros de relógio: Release file not valid yet
Release file for ... is not valid yet (invalid for another 3h 12min) significa que o relógio do sistema está atrasado em relação ao carimbo de data do repositório. Verifique e ressincronize:
Bashtimedatectl timedatectl set-ntp true systemctl restart systemd-timesyncd
Se o systemd-timesyncd não estiver instalado (algumas imagens Debian mínimas), use apt install -y chrony.
6. Versões em fim de vida
Quando uma versão chega ao fim de vida, os seus pacotes são movidos e o apt update devolve 404 ou no longer has a Release file. Para uma versão Ubuntu que não seja LTS, aponte as fontes para o arquivo de versões antigas:
Bashsed -i 's|http://archive.ubuntu.com/ubuntu|http://old-releases.ubuntu.com/ubuntu|g; s|http://security.ubuntu.com/ubuntu|http://old-releases.ubuntu.com/ubuntu|g' /etc/apt/sources.list /etc/apt/sources.list.d/*.sources 2>/dev/null apt update
Para um Debian antigo, use http://archive.debian.org/debian e remova a linha de segurança. Encare um sistema EOL como solução provisória: já não recebe correções de segurança, por isso planeie a atualização para uma versão suportada.
7. Verificar
Bashapt update apt upgrade --dry-run apt-get check
O apt update deve terminar sem linhas Err nem E:, e o apt-get check não deve mostrar nada.
🛠️ Resolução de problemas
O bloqueio volta a cada tentativa: o unattended-upgrades provavelmente está a correr. Veja systemctl status unattended-upgrades e espere que termine.
Conflicting values set for option Signed-By: o mesmo repositório está declarado duas vezes com chaves diferentes. Procure com grep -r example.com /etc/apt/ e mantenha uma só entrada.
apt --fix-broken install falha num script de pacote: leia as últimas linhas do erro e tente dpkg --remove --force-remove-reinstreq PACKAGE seguido de uma reinstalação normal.
✅ O seu gestor de pacotes voltou a estar saudável: atualizações e instalações sem erros!