El sistema de empaquetado de Debian tiene una gran cantidad de información
asociada a cada paquete para asegurar una integración sencilla y limpia en
el sistema. La característica más importante es el sistema de dependencias.
El sistema de dependencias permite el uso de elementos compartidos en el
sistema por programas individuales, tales como bibliotecas. Ésto simplifica
ubicar porciones poco usadas de programas en distintos paquetes para así
reducir el número de cosas que el usuario medio tiene que instalar. También
permite elegir el agente de transporte del correo electrónico, el servidor
de X y demás.
El primer paso para entender el sistema de dependencias es familiarizarse
con el concepto de dependencia simple. El significado de una dependencia
simple es que un paquete requiere que otro también esté instalado para poder
funcionar correctamente.
Por ejemplo, mailcrypt es una extensión de emacs que asiste en el cifrado de
correo con GPG. Sin GPG, mailcrypt es inservible, y por ello mailcrypt tiene
una dependencia simple con GPG. Como también es una extensión de emacs tiene
una dependencia simple con emacs, ya que sin él mailcrypt es inservible.
Otra importante dependencia que debe entender es la dependencia de
conflicto. Esto se produce cuando se instala un paquete junto con otro de
modo que la combinación los hace inservibles, pudiendo causar daños en el
sistema. Como ejemplo, suponga un agente de transporte de correo electrónico
como sendmail, exim o qmail. Es imposible tener dos agentes de transporte de
correo instalados ya que ambos necesitan una conexión con la red para
recibir correo. El intento de instalar dos puede dañar gravemente el
sistema, y por ello todos los agentes de transporte de correo tienen una
dependencia de conflicto con todos los demás.
Para complicarlo todo, cabe la posibilidad de que un paquete pretenda ser
otro. En muchos aspectos, exim y sendmail son idénticos; ambos envían correo
y entienden una misma interfaz. Por ello, el sistema de paquetes tiene una
forma de hacer que ambos declaren ser agentes de transporte de correo
(«mail-transport-agent»). Así, exim y sendmail declaran que proporcionan un
agente de transporte de correo y los paquetes que dependen de tales agentes
dependerán de «mail-transport-agent». Esto puede añadir confusión al
intentar arreglar paquetes manualmente.
Puede que en cualquier momento una dependencia simple se satisfaga por
paquetes ya instalados, o que la dependencia no esté satisfecha. APT intenta
asistir en la resolución de problemas de dependencias mediante un número de
algoritmos automáticos que ayudan en la selección de paquetes a instalar.