Como encontrar e instalar o que realmente falta no seu sistema
A maior parte das configurações que eu vejo quebradas por aí tem a mesma causa: algum componente essencial não foi instalado no momento certo, ou foi instalado de forma incompleta. O conceito de a parte que faltava resume exatamente esse problema — você tem tudo funcionando, exceto aquele pedaço que ninguém te disse que era necessário. Eu lido com isso há anos em servidores e estações de trabalho. A maioria dos tutoriais online pula essa etapa e assume que você já tem tudo. Quando algo dá errado, você perde horas caçando o que está ausente.
O que é a parte que faltava na prática
Não se trata apenas de um pacote que falta. A parte que faltava pode ser uma biblioteca de compilação, um serviço em segundo plano, um caminho nas variáveis de ambiente, uma chave de registro, ou simplesmente a ordem errada em que duas coisas foram instaladas. O comum é que ninguém liste isso como obrigatório porque ele funciona "sozinho" em máquinas de desenvolvedores experientes que já passaram por esse problema antes. O truque é saber onde procurar antes de começar a reinstalar tudo. Em sistemas baseados em Debian e Ubuntu, por exemplo, muitos dos chamados "dependências órfãs" aparecem quando um pacote é removido manualmene e outro ainda precisa dele. O comando apt-get autoremove limpa isso, mas só se você rodar após cada grande instalação ou remoção de pacotes. Eu já vi gente perder dois dias porque o sistema deletou uma biblioteca compartilhada que um serviço crítico precisava. A solução foi reinstalar o pacote pai com apt-get install --reinstall nome-do-pacote e verificar o relatório de dependências com apt-cache depends nome-do-pacote antes de confirmar.
Como diagnosticar o que está faltando antes de instalar qualquer coisa
O primeiro passo é entender o sintoma. Um serviço que não inicia, um erro de compilação, um comando que retorna "comando não encontrado" — cada um aponta para tipos diferentes de parte que falta. Para serviços que falham ao iniciar, o journal do systemd (journalctl -xe) geralmente mostra a linha exata do erro. Para problemas de compilação, o dpkg -l | grep nomedabiblioteca ou o ldconfig -p | grep nome mostram se a biblioteca está registrada no sistema. Um caso específico que eu lembro: configurei um ambiente de CI em um container Ubuntu 22.04 onde o build falhava silenciosamente em uma etapa específica. O erro parecia ser de permissão, mas na verdade era uma biblioteca de criptografia ausente que só era necessária naquela versão do compilador. O pacote faltante era o libssl3t64, que não vem instalado por padrão em containers minimalistas. A solução foi adicionar apt-get install -y libssl3t64 ao Dockerfile antes da etapa de build. Sem isso, o processo compilava, mas falhava na verificação final com um erro genérico de conexão TLS.
Método prático para encontrar e corrigir
Aqui está o fluxo que eu uso, em vez de chutar pacotes: Passo 1: Identifique o sintoma exato. Anote a mensagem completa de erro. Um erro de "permission denied" pode ser falta de biblioteca, mas também pode ser AppArmor, SELinux, ou simplesmente um caminho errado nas variáveis de ambiente.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Passo 2: Verifique se o sistema já sabe o que falta. Em Linux, ldd /caminho/do/executavel mostra todas as bibliotecas necessárias e quais estão marcadas como "not found". É a ferramenta mais subutilizada que existe. Passo 3: Se for um serviço, verifique o status com detalhes: systemctl status nome-do-servico -l e depois journalctl -u nome-do-servico --since "1 hour ago". O log costuma indicar o pacote ou configuração ausente.
Passo 4: Para bibliotecas e dependências de desenvolvimento, use o gerenciador de pacotes do sistema para resolver automaticamente: apt-get install -f ou dnf reinstall no caso do Fedora. Eles tentam reparar dependências quebradas sozinhos. Passo 5: Se nada disso funcionar, investigue manualmente. Sites como packages.ubuntu.com ou pkgs.org permitem buscar qual pacote contém um arquivo específico. Se o erro menciona /usr/lib/libnome.so, você cola esse caminho na busca e descobre qual pacote o fornece.
Erros comuns que todo mundo comete
O mais frequente é instalar o pacote certo mas na versão errada. Eu já perdi tempo depurando um problema que era simplesmente uma versão incompatível de uma biblioteca em um repositório pessoal. Sempre verifique o repositório de onde o pacote está vindo antes de instalar. Use apt-cache policy nome-do-pacote para ver todas as versões disponíveis e de qual repositório cada uma vem. Outro erro comum: confiar em soluções que funcionam em uma distro e copiando para outra. O que é um pacote em Ubuntu pode ser chamado de outra forma no Alpine, no Arch ou no RHEL. Sempre confirme o nome exato do pacote no sistema alvo.
Limitações que ninguém avisa
Esse método tem um ponto cego importante: ele não funciona bem com softwares proprietários ou pacotes que não estão nos repositórios oficiais. Nesses casos, o ldd vai mostrar "not found" e você terá que descobrir manualmente qual arquivo corresponde a qual biblioteca, muitas vezes usando find / -name "nomedabiblioteca*" 2>/dev/null ou consultando a documentação do fabricante. Também não resolve problemas de dependências circulares ou conflitos de versões entre pacotes de repositórios diferentes — nesses casos, a solução mais segura é usar um ambiente isolado, como um container ou um gerenciador de versões como o conda ou pyenv, dependendo do caso. Se você está lidando com um sistema com múltiplos repositórios habilitados e pacotes de origens diferentes misturados, a abordagem automática de reparo de dependências pode acabar quebrando algo existente. Nesse cenário, o mais prudente é fazer backup da lista de pacotes instalados com dpkg --get-selections > backup.txt antes de qualquer operação de reparo, e testar em um ambiente espelhado quando possível.
O que eu recomendo na maioria dos casos é apenas seguir o fluxo diagnóstico passo a passo acima. A parte que faltava raramente é complicada de achar quando você sabe onde olhar. O problema é que a maioria das pessoas começa pela instalação aleatória de pacotes antes de verificar o óbvio, e isso só piora a situação criando novos conflitos.