Como listar as dependências de um pacote no Ubuntu
Ao contrário do Windows, macOS e Android, o software no Ubuntu – e no Linux em geral – não é distribuído como um único pacote. Em vez disso, quando você instala um aplicativo, o gerenciador de pacotes do seu sistema baixa vários pacotes, incluindo o pacote do aplicativo principal e suas dependências. No entanto, isso só vale para a instalação de pacotes tradicionais no Linux, ou seja, usando gerenciadores de pacotes.
Saber quais dependências adicionais são baixadas durante uma instalação pode ser benéfico para usuários iniciantes e avançados. Desta forma, tem-se total controle sobre os pacotes instalados em seu sistema.
Vamos dar uma olhada em como você pode verificar as dependências de um pacote no Ubuntu.
O que são dependências de pacote?
Dependências são pacotes de suporte necessários para o funcionamento adequado de um aplicativo no Linux. Por exemplo, se você deseja baixar o reprodutor de mídia VLC no Ubuntu, o APT instalará alguns pacotes adicionais como libc6 e gcc , além do pacote principal " vlc ". Uma dependência também pode ter outros pacotes como suas dependências, portanto, formando uma estrutura hierárquica.
Como os pacotes do Linux são interdependentes, quase todo software requer pacotes adicionais que você deve instalar em seu sistema.
Embora os gerenciadores de pacotes como o APT automatizem o gerenciamento e a instalação de tais dependências, erros ocorrem quando você tenta construir o pacote manualmente a partir da fonte. No entanto, você pode resolver esses erros simplesmente instalando a dependência necessária em seu sistema usando o comando apt install .
Como verificar dependências de pacotes no Linux
Felizmente, no Ubuntu, existem várias maneiras de obter uma lista de dependências de um pacote. APT, o gerenciador de pacotes padrão em distros Ubuntu e Debian, oferece vários comandos para obter informações relacionadas à dependência de um pacote.
Usando o Gerenciador de Pacotes APT
Você pode usar o APT no Ubuntu para obter uma lista de dependências associadas a um pacote. A sintaxe básica do comando é:
sudo apt depends packagename
Por exemplo, para verificar as dependências do pacote rhythmbox :
sudo apt depends rhythmbox
Além da lista de dependências, a saída também incluirá pacotes recomendados e sugeridos que você pode instalar junto com o rhythmbox .
Alternativamente, você também pode usar o comando apt-cache para obter a mesma saída.
sudo apt-cache depends rhythmbox
Para obter informações adicionais relacionadas a um pacote específico, use o método show em vez de Depende .
sudo apt show rhythmbox
sudo apt-cache show rhythmbox
Saída:
Listando dependências usando dpkg
Se você baixou um pacote DEB em seu sistema e deseja saber quais dependências serão instaladas junto com o pacote, você pode usar o sinalizador -I (i maiúsculo, não L minúsculo) ou –info com o comando.
sudo dpkg -I /path/to/package.deb
sudo dpkg --info /path/to/package.deb
… onde /path/to/package.deb é o caminho absoluto ou relativo para o arquivo DEB.
A saída exibirá o tamanho do pacote, a fonte e outras informações úteis junto com a lista de dependências.
Para obter a lista de dependências de um pacote instalado, use o sinalizador -s com dpkg. Por exemplo:
sudo dpkg -s firefox
Saída:
Usando apt-rdepends
Para obter uma saída mais detalhada, você pode usar o utilitário apt-rdepends. Uma vez que não vem pré-instalado na maioria das distribuições Linux, você terá que instalá-lo manualmente no Ubuntu usando APT.
sudo apt install apt-rdepends
Use o seguinte formato de comando para obter a árvore de dependência de um pacote:
apt-rdepends packagename
Por exemplo:
apt-rdepends vlc
Saída:
A saída gerada geralmente é longa, pois apt-rdepends exibe uma árvore hierárquica completa de dependências, o que significa que você também obtém a lista de dependências de uma dependência.
Você também pode obter uma lista de pacotes que dependem de um pacote específico. Por exemplo, para verificar quais pacotes requerem libc como dependência:
apt-rdepends -r libc
Saída:
O utilitário de dependência reversa
Embora o recurso de dependência reversa (o sinalizador -r ) do apt-rdepends funcione melhor do que o esperado, há ainda outro utilitário que você pode usar para extrair dependências reversas de um pacote. O comando reverse-depends faz parte do pacote ubuntu-dev-tools e pode ser baixado usando:
sudo apt install ubuntu-dev-tools
A sintaxe padrão do comando é:
reverse-depends options packagename
… onde options são os sinalizadores que você pode usar com o comando e packagename é o nome do pacote que você deseja reverter, verifique as dependências.
Você também pode adicionar vários sinalizadores ao comando mencionado para modificar a saída. Aqui está uma lista das opções mais úteis:
- -R : Lista apenas dependências diretas (sem pacotes sugeridos ou recomendados)
- -s : Inclui pacotes sugeridos
- -l : apresenta a saída em um formato mais limpo, apropriado para uso em scripts
Caso você não consiga descobrir como usar a ferramenta e precise da ajuda da linha de comando , use o sinalizador –help ou -h .
reverse-depends -h
reverse-depends --help
Obter lista de dependências usando uma instalação / remoção simulada
Para aqueles que desejam uma breve lista de todas as dependências que atualmente não estão instaladas no sistema, você pode executar uma instalação simulada (ou desinstalação) de um pacote específico.
Para verificar as dependências exigidas pelo pacote PHP, por exemplo, execute o seguinte comando:
sudo apt install -s php
A saída conterá uma seção "Os seguintes pacotes adicionais serão instalados". Todos os nomes de pacotes listados a seguir são dependências que não foram encontradas em seu sistema.
Se você deseja obter uma lista de dependências para um pacote já instalado no Ubuntu, você pode executar uma desinstalação simulada para verificar quais pacotes adicionais serão removidos com ele.
sudo apt remove -s packagename
Exemplo:
sudo apt remove -s rhythmbox
Saída:
Pacotes Linux são interdependentes
Como você pode deduzir razoavelmente a partir deste guia, quase todo pacote Linux depende de outro pacote. O princípio básico por trás desse conceito é que, em sistemas operacionais baseados em Linux, cada pacote deve fazer um único trabalho, e bem.
Se um pacote foi desenvolvido para gerenciar serviços de áudio, outros programas simplesmente listarão o referido pacote como sua dependência e o usarão para cumprir seus requisitos de áudio.
Além disso, caso vários aplicativos exijam o mesmo pacote, ele é instalado apenas uma vez no sistema, evitando a redundância de dados e economizando espaço de armazenamento em disco. Você também pode obter uma lista de todos os pacotes atualmente instalados em seu sistema usando o APT.