Como os arquivos binários de instalação manipulam a dependência?

0

No repositório do Ubuntu, quando um aplicativo ou biblioteca depende de outros, a instalação via apt-get automaticamente baixará e instalará as dependências primeiro. Isso se instala a partir de arquivos de instalação binários como .deb ?

Quando instalar um aplicativo ou biblioteca construindo seu código fonte, ./configure dirá quais dependências estão faltando e eu as instalarei manualmente primeiro.

Quando instalar um aplicativo executando seu arquivo .deb baixado de sites como o Ubuntu ppa, não me lembro de ter que lidar com dependências. Um arquivo .deb contém as dependências em seu conteúdo ou faz download e instala automaticamente as dependências?

    
por Tim 25.04.2017 / 05:58

3 respostas

3

Quando você obtiver a lista de pacotes de um repositório via apt-get update , ambos em /var/lib/apt e /var/lib/dpkg , você encontrará informações para todos os pacotes no formulário

Package: apt
Priority: important
Section: admin
Installed-Size: 3462
Maintainer: APT Development Team <[email protected]>
Architecture: i386
Version: 1.3.1
Replaces: apt-utils (<< 1.3~exp2~)
Depends: adduser, gpgv | gpgv2 | gpgv1, debian-archive-keyring, init-system-helpers (>= 1.18~), libapt-pkg5.0 (>= 1.3~rc2), libc6 (>= 2.15), libgcc1 (>= 1:4.2), libstdc++6 (>= 5.2)
Recommends: gnupg | gnupg2 | gnupg1
Suggests: apt-doc, aptitude | synaptic | wajig, dpkg-dev (>= 1.17.2), powermgmt-base, python-apt
Breaks: apt-utils (<< 1.3~exp2~)
Filename: pool/main/a/apt/apt_1.3.1_i386.deb
Size: 1208426
MD5sum: 9d35afa0f8220cabf0c837f8073569c2
Description: commandline package manager
Description-md5: 9fb97a88cb7383934ef963352b53b4a7
Tag: admin::package-management, devel::lang:ruby, hardware::storage,
 hardware::storage:cd, implemented-in::c++, implemented-in::perl,
 implemented-in::ruby, interface::commandline, network::client,
 protocol::ftp, protocol::http, protocol::ipv6, role::program,
 scope::application, scope::utility, sound::player, suite::debian,
 use::downloading, use::organizing, use::searching, works-with::audio,
 works-with::software:package, works-with::text
SHA256: 9111e4e9ffe3f3dd3c62c4e67485d3495c15bf5d24f4f1c532db4430b389eb19

Essas informações também estão presentes como o arquivo debian/control em cada pacote .deb . Como você pode ver, ele contém uma linha Depends: ... que lista todas as dependências. A partir dessas dependências apt-get calcula recursivamente todos os pacotes que precisam ser instalados.

Quando um pacote é criado, esta informação é adicionada pelo mantenedor do pacote (embora existam algumas ferramentas para ajudar com isso), da mesma forma como você adiciona pacotes manualmente quando compila você mesmo.

    
por 25.04.2017 / 07:47
2

A pessoa que empacotou o arquivo .deb em primeiro lugar seguiu um procedimento semelhante ao que você descreve para a instalação manual. Quando eles fizeram isso (se fizeram o trabalho corretamente), eles também adicionaram informações sobre as dependências necessárias no arquivo debian/control do pacote de origem.

apt-get e outros dpkg front ends de fato operam somente em .deb packages e o banco de dados de pacotes associado com metainformation sobre esses pacotes. Às vezes, você quer criar um pacote .deb de software produzido localmente, para que toda a cadeia funcione corretamente e você obtenha o benefício da instalação automática de dependências, etc.

    
por 25.04.2017 / 08:04
1

Quando você tenta instalar (usando dpkg -i ) algum pacote *.deb com uma dependência ausente (insatisfeita), você recebe uma mensagem de erro mencionando os pacotes ausentes. Você pode então apt-get install ou aptitude install desses pacotes ausentes.

    
por 25.04.2017 / 08:35