¿Cómo manejan los archivos de instalación binarios la dependencia?

¿Cómo manejan los archivos de instalación binarios la dependencia?

En el repositorio de Ubuntu, cuando una aplicación o biblioteca depende de otras, la instalación mediante apt-get descargará e instalará automáticamente las dependencias primero. ¿Se instala de esta manera desde archivos de instalación binarios como .deb?

Cuando instale una aplicación o biblioteca compilando su código fuente, ./configurele indicaré qué dependencias faltan y las instalaré manualmente primero.

Cuando instalo una aplicación ejecutando su .debarchivo descargado de sitios web como Ubuntu ppa, no recuerdo que tenga que manejar dependencias. ¿Un .debarchivo contiene las dependencias en su contenido o las descarga e instala automáticamente?

Respuesta1

Cuando obtienes la lista de paquetes de un repositorio a través de apt-get update, tanto en /var/lib/aptcomo /var/lib/dpkgencontrarás información para todos los paquetes en el formulario

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

Esta información también está presente como archivo debian/controlen cada .debpaquete. Como puede ver, contiene una Depends: ...línea que enumera todas las dependencias. A partir de estas dependencias apt-getcalcula recursivamente todos los paquetes que deben instalarse.

Cuando se crea un paquete, el mantenedor del paquete agrega esta información (aunque existen algunas herramientas para ayudar con esto), de manera similar a cómo agrega paquetes manualmente cuando lo compila usted mismo.

Respuesta2

La persona que empaquetó el .debarchivo en primer lugar siguió un procedimiento similar al que usted describe para la instalación manual. Cuando hicieron eso (si hicieron su trabajo correctamente) también agregaron información sobre las dependencias requeridas en el debian/controlarchivo del paquete fuente.

apt-gety otras dpkginterfaces de hecho operan únicamente en .debpaquetes y la base de datos de paquetes asociada con metainformación sobre estos paquetes. A veces desea crear un .debpaquete de software producido localmente solo para que toda la cadena funcione correctamente y obtener el beneficio de la instalación automática de dependencias, etc.

Respuesta3

Cuando intenta instalar (usando dpkg -i) algún *.debpaquete al que le falta una dependencia (insatisfecha), recibe un mensaje de error que menciona los paquetes faltantes. Luego puede apt-get installo aptitude installestos paquetes faltantes.

información relacionada