Debian

Dependências do pacote Debian

Dependências do pacote Debian
Para distribuições Linux como Debian GNU / Linux, existem mais de 60.000 pacotes de software diferentes. Todos eles têm uma função específica. Neste artigo, explicamos como o gerenciamento de pacotes gerencia de forma confiável esse grande número de pacotes de software durante uma instalação, atualização ou remoção para manter seu sistema funcionando e totalmente estável.

Para o Debian GNU / Linux, isso se refere às ferramentas apt, apt-get, aptitude, apt-cache, apt-Depends, apt-rdepends, dpkg-deb e apt-mark.

Disponibilidade de pacotes de software

Como já foi dito acima, uma distribuição Linux consiste em toneladas de pacotes de software diferentes. Hoje, o software é bastante complexo, por isso é comum dividir o software em vários pacotes únicos. Esses pacotes podem ser categorizados por funcionalidade ou função, como pacotes binários, bibliotecas, documentação, exemplos de uso, bem como coleções específicas de idioma e fornecem apenas uma parte selecionada do software. Não existe uma regra fixa para isso, e a divisão é feita pela equipe de desenvolvimento de uma ferramenta ou pelo mantenedor do pacote que cuida do pacote de software para sua distribuição Linux. Usando o aptitude, a Figura 1 lista os pacotes que contêm as traduções para os diferentes idiomas para o navegador Mozilla Firefox.

Figura 1: aptitude-firefox.png

Esta forma de trabalhar permite que cada pacote seja mantido por um desenvolvedor diferente ou como uma equipe inteira. Além disso, a divisão em componentes únicos permite que outros pacotes de software façam uso dele para seus próprios fins também. Uma funcionalidade necessária pode ser aplicada e não precisa ser reinventada.

Organização do Pacote

As ferramentas de gerenciamento de pacotes na distribuição Debian GNU / Linux cuidam constantemente para que as dependências dos pacotes instalados sejam atendidas completamente. Este é especialmente o caso se um pacote de software se destina a ser instalado, atualizado ou excluído em ou de seu sistema. Os pacotes que faltam são adicionados ao sistema ou os pacotes instalados são removidos do sistema caso não sejam mais necessários. A Figura 2 demonstra isso para a remoção do pacote 'mc-data' usando 'apt-get'. O pacote 'mc-data' recomenda remover automaticamente o pacote 'mc' também, porque não faz mais sentido ser instalado sem 'mc-data'.

Figura 2: apt-get-remove-mc.png

Marcas e sinalizadores de embalagem

Durante o seu trabalho, as ferramentas de gerenciamento de pacotes respeitam os sinalizadores e marcas dos pacotes que são definidos. Eles são configurados automaticamente ou configurados manualmente pelo administrador do sistema. Especialmente este comportamento refere-se ao sinalizador 'pacote essencial' que é definido para pacotes que não devem ser removidos. Um aviso claro é emitido antes de você fazer isso (consulte a Figura 3).

Figura 3: apt-get-remove.png

Além disso, as três marcas 'automático', 'manual' e 'espera' são levadas em consideração. Eles marcam um pacote como sendo instalado automaticamente, instalado manualmente ou não deve ser atualizado (manter a versão atual). Um pacote de software é marcado como 'automático' ou 'manual', mas não ambos.

Entre outros, o comando 'apt-mark' lida com as marcas e sinalizadores usando os seguintes subcomandos:

Para listar todos os pacotes instalados manualmente, emita este comando:

$ apt-mark showmanual
uma palavra-chave
abs-guia
ack-grep
acl
acpi

$

Para manter uma versão do pacote, use o subcomando 'hold'. O exemplo abaixo mostra isso para o pacote 'mc'.

# apt-mark hold mc
mc colocado em espera
#

O subcomando 'showhold' lista os pacotes que estão em espera (no nosso caso, é o pacote 'mc', apenas):

# apt-mark showhold
mc
#

Usando um método alternativo intitulado 'apt pinning', os pacotes são classificados por prioridades. Apt os aplica a fim de decidir como lidar com este pacote de software e as versões que estão disponíveis no repositório de software.

Descrição do pacote

Usando um método alternativo intitulado 'apt pinning', os pacotes são classificados por prioridades. Apt os aplica a fim de decidir como lidar com este pacote de software e as versões que estão disponíveis no repositório de software.

Cada pacote de software vem com sua própria descrição de pacote que é padronizada. Entre outros campos, esta descrição especifica explicitamente de quais pacotes adicionais depende. Ferramentas específicas de distribuição extraem essas informações da descrição do pacote e calculam e visualizam as dependências para você, então. O próximo exemplo usa o comando 'apt-cache show' para exibir a descrição do pacote 'poppler-utils' (veja a Figura 4).

Figura 4: package-description-poppler-utils.png

A descrição do pacote contém uma seção chamada 'Depends'. Esta seção lista os outros pacotes de software mais o número da versão da qual o pacote atual depende. Na Figura 4, esta seção está destacada em vermelho e mostra que 'poppler-utils' depende dos pacotes 'libpoppler64', 'libc6', 'libcairo2', 'libfreetype6', 'liblcms2-2', 'libstdc ++ 6' e 'zlib1g'.

Mostra as dependências do pacote

Ler a descrição do pacote é a maneira mais difícil de descobrir as dependências do pacote. A seguir, mostraremos como simplificar isso.

Existem várias maneiras de mostrar as dependências do pacote na linha de comando. Para um pacote deb como um arquivo local, use o comando 'dpkg-deb' com dois parâmetros - o nome do arquivo do pacote e a palavra-chave 'Depends'. O exemplo abaixo demonstra isso para o pacote 'skypeforlinux-64.deb ':

$ dpkg-deb -f Downloads / skypeforlinux-64.deb Depends
gconf-service, libasound2 (> = 1.0.16), libatk1.0-0 (> = 1.12.4), libc6 (> = 2.17),
libcairo2 (> = 1.2.4), libcups2 (> = 1.4.0), libexpat1 (> = 2.0.1),
libfreetype6 (> = 2.4.2), libgcc1 (> = 1: 4.1.1), libgconf-2-4 (> = 3.2.5),
libgdk-pixbuf2.0-0 (> = 2.22.0), libglib2.0-0 (> = 2.31.8), libgtk2.0-0 (> = 2.24.0),
libnspr4 (> = 2: 4.9-2 ~), libnss3 (> = 2: 3.13.4-2 ~), libpango-1.0-0 (> = 1.14.0),
libpangocairo-1.0-0 (> = 1.14.0), libsecret-1-0 (> = 0.7), libv4l-0 (> = 0.5.0),
libx11-6 (> = 2: 1.4.99.1), libx11-xcb1, libxcb1 (> = 1.6), libxcomposite1 (> = 1: 0.3-1),
libxcursor1 (>> 1.1.2), libxdamage1 (> = 1: 1.1), libxext6, libxfixes3,
libxi6 (> = 2: 1.2.99.4), libxrandr2 (> = 2: 1.2.99.3), libxrender1, libxss1,
libxtst6, apt-transport-https, libfontconfig1 (> = 2.11.0), libdbus-1-3 (> = 1.6.18),
libstdc ++ 6 (> = 4.8.1)
$

Para fazer o mesmo para um pacote instalado, use 'apt-cache'. O primeiro exemplo combina o subcomando 'show' seguido pelo nome do pacote. A saída é enviada para o comando 'grep' que filtra a linha 'Depende':

$ apt-cache show xpdf | grep depende
Depende: libc6 (> = 2.4), libgcc1 (> = 1: 4.1.1), libpoppler46 (> = 0.26.2),
libstdc ++ 6 (> = 4.1.1), libx11-6, libxm4 (> = 2.3.4), libxt6
$

O comando 'grep-status -F package -s Depends xpdf' irá relatar a mesma informação.

Mais específico, o segundo exemplo usa novamente 'apt-cache', mas com o subcomando 'depende', em vez disso. O subcomando é seguido pelo nome do pacote:

$ apt-cache depende do xpdf
xpdf
Depende: libc6
Depende: libgcc1
Depende: libpoppler46
Depende: libstdc ++ 6
Depende: libx11-6
Depende: libxm4
Depende: libxt6
Recomenda: poppler-utils
poppler-utils: i386
Recomenda: poppler-data
Recomenda: gsfonts-x11
Recomenda: cups-bsd
cups-bsd: i386
Colide com:
Colide com:
Colide com:
Colide com:
Substitui:
Substitui:
Substitui:
Substitui:
Colide com: xpdf: i386
$

A lista acima é bastante longa e pode ser encurtada usando a opção '-i' (abreviação de '-important'):

$ apt-cache Depende -i xpdf
xpdf
Depende: libc6
Depende: libgcc1
Depende: libpoppler46
Depende: libstdc ++ 6
Depende: libx11-6
Depende: libxm4
Depende: libxt6
$

O comando 'apt-rdepends' faz o mesmo, mas com informações de versão, se especificado na descrição:

$ apt-rdepends xpdf
Lendo listas de pacotes ... Concluído
Construindo árvore de dependência
Lendo informações de estado ... Concluído
xpdf
Depende: libc6 (> = 2.4)
Depende: libgcc1 (> = 1: 4.1.1)
Depende: libpoppler46 (> = 0.26.2)
Depende: libstdc ++ 6 (> = 4.1.1)
Depende: libx11-6
Depende: libxm4 (> = 2.3.4)
Depende: libxt6
libc6
Depende: libgcc1

$

O comando 'aptitude' também funciona com opções. Para dependências, use a opção '~ R' seguida do nome do pacote. A Figura 5 mostra isso para o pacote 'xpdf'. A letra 'A' na segunda coluna da saída do 'aptitude' identifica o pacote como sendo instalado automaticamente.

Figura 5: aptitude-rdepends.png

Dependências de pacote podem ser um pouco complicadas. Pode ajudar a mostrar as dependências do pacote graficamente. Use o comando 'debtree' seguido do nome do pacote para criar uma representação gráfica das dependências do pacote. A ferramenta 'ponto' do pacote Graphviz transforma a descrição em uma imagem da seguinte maneira:

$ debtree xpdf | dot -Tpng> gráfico.png

Na Figura 6 você vê a imagem PNG criada que contém o gráfico de dependência.

Figura 6: ponto.png

Mostra as dependências reversas

Até agora, mostramos que respondemos à questão de quais pacotes são necessários para um pacote. Há também o contrário - as chamadas dependências reversas. Os próximos exemplos lidam com o pacote, bem como com os pacotes que dependem dele. O exemplo número um usa 'apt-cache' com o subcomando 'rdepends' da seguinte forma:

$ apt-cache rdepends xpdf
xpdf
O reverso depende:
| octave-doc
xpdf: i386
libfontconfig1: i386
| xmds-doc
xfe
wiipdf
| vim-latexsuite
python-scapy
| rubi-tioga
| python-tables-doc
| page-crunch
| octave-doc
| muttprint-manual
mozplugger
mlpost
libmlpost-ocaml-dev

$

Pacotes que dependem de outros pacotes são marcados com um símbolo de barra vertical. Estes pacotes não precisam ser instalados em seu sistema, mas devem ser listados no banco de dados de pacotes.

O próximo exemplo usa 'aptitude' para listar os pacotes que têm uma referência direta ao pacote 'xpdf' (veja a Figura 7).

Figura 7: aptitude-search.png

Valide a instalação para pacotes ausentes

'Apt-get' oferece o subcomando 'check' que permite validar a instalação. Se você vir a seguinte saída, nenhum pacote está faltando:

# apt-get check
Lendo listas de pacotes ... Concluído
Construindo árvore de dependência
Lendo informações de estado ... Concluído
#

Conclusão

Encontrar dependências de pacotes funciona bem com as ferramentas certas. Usá-los corretamente ajuda a entender porque os pacotes estão instalados e quais podem estar faltando.

Links e referências

Tutorial de Shadow of the Tomb Raider para Linux
Shadow of the Tomb Raider é a décima segunda adição à série Tomb Raider - uma franquia de jogos de ação e aventura criada pela Eidos Montreal. O jogo ...
Como aumentar o FPS no Linux?
FPS significa Quadros por segundo. A tarefa do FPS é medir a taxa de quadros em reproduções de vídeo ou desempenho de jogos. Em palavras simples, o nú...
Top jogos do Oculus App Lab
Se você é proprietário de um fone de ouvido Oculus, deve estar informado sobre o carregamento lateral. Sideload é o processo de instalação de conteúdo...