Aprenda o gerenciamento de dependências usando o comando ldd para administrar melhor sua máquina Linux e os pacotes instalados.
O gerenciamento de dependências é parte integrante da manutenção do seu sistema Linux. O software é complexo e depende de uma infinidade de bibliotecas e arquivos compartilhados. Às vezes, torna-se difícil acompanhar os arquivos exigidos por um aplicativo.
É aqui que o comando ldd no Linux entra em ação. ldd é uma ferramenta de linha de comando engenhosa para acompanhar as dependências de objetos compartilhados exigidas por um aplicativo.
Vamos aprender como você pode usar o comando ldd a seu favor e se tornar um profissional no gerenciamento de dependências no Linux!
O que são dependências de pacote?
O software não é apenas um código-fonte autônomo, mas sim um amálgama de código-fonte nativo e código emprestado de bibliotecas externas. Quando essas bibliotecas e outros objetos compartilhados estão faltando em seu sistema, um aplicativo que depende deles pode funcionar mal ou se recusar a iniciar.
Todos esses arquivos compartilhados, pacotes, bibliotecas, etc., são cumulativamente chamados de dependências no Linux. Embora essa definição curta dê uma ideia aproximada sobre dependências, a imagem real é um pouco mais complexa do que isso, e é por isso que é importante aprender quais são as dependências do pacote em profundidade.
O que é o comando ldd e como ele funciona?
ldd é uma abreviação de List Dynamic Dependencies. Como o nome sugere, o ldd lista todos os objetos compartilhados exigidos por um aplicativo.
Ele funciona invocando o vinculador dinâmico com configurações especialmente definidas variáveis ambientais. Quando você executa ldd com a localização de um binário, ele retorna uma saída contendo a lista de dependências, sua localização e um valor hexadecimal representando onde na memória eles são carregados.
Encontrando dependências de objetos compartilhados com o comando ldd
Agora que você tem uma ideia clara do que é o ldd, vamos colocar a mão na massa e aprender como encontrar dependências de software com ele.
Antes de aprender a usar o ldd, primeiro confirme se você o possui instalado em seu sistema imprimindo a versão instalada do ldd:
ldd --versão
Se voltar um erro "comando não encontrado", você precisa primeiro instalar o ldd.
Em sistemas baseados em Ubuntu e Debian, execute:
sudo apt install libc-bin
Para distribuições baseadas em Arch:
sudo pacman -S glibc
No RHEL e Fedora:
sudo dnf install glibc-common
Com o ldd instalado, agora você pode se concentrar em aprender como usá-lo. Aqui está a sintaxe básica para o comando ldd:
ldd binary_location
Caso você não saiba a localização do binário, você pode usar um dos muitos operadores de linha de comando do Linux e combine a saída do comando which com ldd para encontrar as dependências do pacote:
ldd -flag $(qual binary_name)
O comando ldd oferece quatro opções diferentes para modificar a saída. Eles são:
- -v: Imprime saída detalhada, incluindo informações adicionais, como informações de versão para cada dependência
- -você: Imprime todas as dependências não utilizadas, ou seja, dependências carregadas, mas não implementadas
- -d: Imprime objetos ausentes e realiza realocações
- -r: Imprime objetos e funções ausentes e realiza realocações
Gerenciando Dependências de Pacotes no Linux
Com o ldd em seu arsenal de software, você poderá solucionar problemas relacionados à dependência de objetos compartilhados com seu aplicativo.
Além disso, como o ldd também mostra o local onde uma biblioteca é carregada, você poderá depurar um aplicativo e entender melhor como uma determinada biblioteca é implementada. O ldd também imprime as versões das bibliotecas compartilhadas usadas em um aplicativo.
Usando esse recurso, você pode auditar seus aplicativos em busca de possíveis vulnerabilidades associadas a uma versão desatualizada de uma biblioteca compartilhada.
O gerenciamento de dependência é uma habilidade essencial crucial para manter a integridade do sistema Linux. No entanto, às vezes, um pacote pode quebrar apesar de todas as suas dependências estarem íntegras. É importante que você saiba como encontrar e consertar pacotes quebrados.