
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, ./configure
le indicaré qué dependencias faltan y las instalaré manualmente primero.
Cuando instalo una aplicación ejecutando su .deb
archivo descargado de sitios web como Ubuntu ppa, no recuerdo que tenga que manejar dependencias. ¿Un .deb
archivo 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/apt
como /var/lib/dpkg
encontrará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/control
en cada .deb
paquete. Como puede ver, contiene una Depends: ...
línea que enumera todas las dependencias. A partir de estas dependencias apt-get
calcula 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 .deb
archivo 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/control
archivo del paquete fuente.
apt-get
y otras dpkg
interfaces de hecho operan únicamente en .deb
paquetes y la base de datos de paquetes asociada con metainformación sobre estos paquetes. A veces desea crear un .deb
paquete 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 *.deb
paquete al que le falta una dependencia (insatisfecha), recibe un mensaje de error que menciona los paquetes faltantes. Luego puede apt-get install
o aptitude install
estos paquetes faltantes.