Ao executar um simples apt update em uma máquina Debian ou Ubuntu, é comum ver uma série de avisos no terminal: alertas de alvos configurados múltiplas vezes (Target configured multiple times) somados a notas informando o salto de aquisição de arquiteturas (Skipping acquisition...).
Embora avisos do tipo W: (Warning) e N: (Notice) não interrompam a atualização como um erro fatal (E:), eles indicam redundância de processamento, listas de fontes corrompidas e quebra de idempotência em scripts de instalação.
Abaixo, compartilho o funcionamento do parser do APT, como inspecionar o formato moderno deb822 e o procedimento exato para limpar a base de repositórios.
1. O sintoma no terminal#
Durante a sincronização de índices do APT:
W: O alvo Packages (main/binary-amd64/Packages) está configurado várias vezes em /etc/apt/sources.list.d/editor-apparmor.sources:1 e /etc/apt/sources.list.d/editor.sources:1
W: O alvo Packages (main/binary-arm64/Packages) está configurado várias vezes em /etc/apt/sources.list.d/editor-apparmor.sources:1 e /etc/apt/sources.list.d/editor.sources:1
W: O alvo Translations (main/i18n/Translation-pt_BR) está configurado várias vezes em /etc/apt/sources.list.d/editor-apparmor.sources:1 e /etc/apt/sources.list.d/editor.sources:1
N: Pulando a aquisição do arquivo configurado 'main/binary-i386/Packages', pois o repositório 'https://region-apt.pkg.example.com/projects/updater-dev repo-debian InRelease' não tem suporte à arquitetura 'i386'
Identifiquei dois problemas distintos:
- Colisão de alvos (Target collision): Múltiplos arquivos declarando exatamente os mesmos metadados (
Packages,Translations). - Conflito de multiarch: O APT tentando baixar índices
i386em repositórios remotos que oferecem apenas pacotes de 64 bits (amd64earm64).
2. A mecânica do parser do APT e o formato deb822#
O utilitário apt varre sequencialmente o arquivo mestre /etc/apt/sources.list e todos os arquivos .list ou .sources dentro de /etc/apt/sources.list.d/.
Internamente, o parser da biblioteca do APT constrói uma tupla estruturada para cada entrada:
Alvo = (URI, Distribuição/Suite, Componente, Arquitetura)
Quando dois arquivos distintos registram a mesma tupla exata, o parser não realiza um merge silencioso. Ele emite um aviso para evitar processamento duplicado de arquivos de índice (Packages.gz).
Inspecionando a estrutura deb822#
Ao verificar os arquivos apontados no erro:
cat /etc/apt/sources.list.d/editor-apparmor.sources
cat /etc/apt/sources.list.d/editor.sources
Ambos continham a mesma estrutura no formato deb822:
Types: deb
URIs: https://downloads.example.com/aptrepo
Suites: stable
Components: main
Architectures: amd64,arm64
Signed-By: /usr/share/keyrings/example-keyring.gpg
A causa: uma atualização automática do software gerou um novo arquivo (editor-apparmor.sources) sem remover o arquivo anterior (editor.sources).
3. Rastreando repositórios legados e multiarch (i386)#
Para entender a nota sobre a arquitetura i386, verifiquei as arquiteturas estrangeiras registradas no DPKG:
dpkg --print-foreign-architectures
# Saída: i386
Com o multiarch habilitado no sistema operacional (frequente por conta de pacotes como Wine ou Steam), o APT tenta buscar índices i386 em todos os repositórios cadastrados.
Buscando de onde vinha o repositório antigo mencionado na nota:
grep -rE "updater-dev|pkg.example.com" /etc/apt/sources.list*
Resultado:
/etc/apt/sources.list.d/updater-legacy.list:deb [signed-by=/etc/apt/keyrings/legacy-key.gpg] https://region-apt.pkg.example.com/projects/updater-dev/ repo-debian main
O arquivo legado usava a sintaxe antiga de linha única sem especificar [arch=amd64,arm64]. Ao tentar baixar binary-i386/Packages, o servidor remoto retornava 404.
4. Passo a passo para limpeza e reconstrução#
Passo 1: Eliminar o arquivo duplicado#
Remova o arquivo redundante:
sudo rm /etc/apt/sources.list.d/editor-apparmor.sources
Passo 2: Remover o repositório legado obsoleto#
Como o software migrou para a URL consolidada presente em editor.sources:
sudo rm /etc/apt/sources.list.d/updater-legacy.list
(Caso precisasse manter o repositório legado, bastaria adicionar a flag de arquitetura: deb [arch=amd64,arm64 signed-by=...] https://...).
Passo 3: Reconstrução limpa do cache do APT#
Para eliminar índices órfãos persistidos em disco:
# Limpar índices antigos baixados
sudo rm -rf /var/lib/apt/lists/*
# Limpar cache de pacotes locais
sudo apt clean
# Reconstruir o mapa de alvos
sudo apt update
Boas práticas para manter o APT limpo#
- Especifique arquiteturas explicitamente: Em repositórios de terceiros, utilize sempre
Architectures: amd64,arm64no formato deb822 ou[arch=amd64]no formato legadão para evitar tentativas inúteis de download em máquinas multiarch. - Garanta idempotência em automações: Ao criar playbooks do Ansible ou scripts de provisionamento, certifique-se de que a adição de um repositório substitua o anterior sem deixar arquivos duplicados em
/etc/apt/sources.list.d/. - Limpeza atômica com /var/lib/apt/lists/: Quando o APT insistir em referenciar arquivos inexistentes, limpar a pasta de listas força um download integral e consistente.
Conclusão#
Avisos W: e notas N: no APT não chegam a impedir a execução do apt update, mas revelam duplicidades de fontes e desperdício de I/O em repositórios que não suportam sua configuração multiarch. Adotar o formato deb822 com escopos declarativos e auditar periodicamente o diretório /etc/apt/sources.list.d/ garante consistência e previsibilidade na gestão de pacotes do Debian e Ubuntu.
Este artigo foi útil?
Deixe uma reação rápida para apoiar o conteúdo:
Este post está licenciado sob CC BY-NC.



Comentários
Participe da discussão abaixo.
0 comentários