Corrigir erros comuns do APT em VPS Ubuntu e Debian

3 min
Alojamento VPS/VDS

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:

Bash
cat /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:

Bash
ps 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:

Bash
rm -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.

Bash
install -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:

Bash
timedatectl 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:

Bash
sed -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

Bash
apt 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!

Fique a par das últimas ofertas, descontos e promoções especiais.

Ver promoções

Utilizamos cookies

Utilizamos cookies analíticos para melhorar a sua experiência no nosso site. Nenhum dado é vendido a terceiros. Saiba mais na nossa política de privacidade.