O sistema de pacotes Debian tem uma grande quantidade de informação
associada a cada pacote para ajudar a assegurar que este se integra de modo
limpo e fácil no sistema. A mais proeminente das suas funcionalidades é o
sistema de dependências.
O sistema de dependências permite a programas individuais fazerem uso de
elementos partilhados no sistema tais como as bibliotecas. Facilita a
colocação de porções de um programa usadas raramente em pacotes separados
para reduzir o número de coisas que é necessário instalar ao utilizador
médio. Também permite opções em agentes de transporte de mail, servidores X
e mais.
O primeiro passo para compreender o sistema de dependências é pegar no
conceito de uma dependência simples. O significado de uma dependência
simples é que um pacote requer outro pacote seja instalado ao mesmo tempo
para funcionar correctamente.
Por exemplo, mailcrypt é uma extensão do emacs que ajuda a encriptar mail
com GPG. Sem o GPGP instalado o mailcrypt é inútil, então o mailcrypt tem
uma dependência simples do GPG. Também, porque é uma extensão do emacs, tem
uma dependência simples do emacs, e sem o emacs é completamente inútil.
A outra dependência importante a compreender é a dependência de
conflito. Significa que um pacote, quando instalado com outro pacote, não
irá funcionar e pode ser extremamente prejudicial para o sistema. Como
exemplo considere um agente de transporte de mail como o sendmail, exim ou
qmail. Não é possível ter dois agentes de transporte de mail instalados
porque ambos precisam de escutar na rede para receberem mail. Tentar
instalar dois irá danificar seriamente o sistema, por isso todos os agentes
de transporte de mail têm uma dependência de conflito com todos os outros
agentes de transporte de mail.
Como uma complicação adicional existe a possibilidade de um pacote fingir
ser outro pacote. Considere que exim e sendmail para muitas intenções são
idênticos, ambos entregam mail e compreendem uma interface comum. Por isso,
o sistema de pacotes tem um modo para eles declararem que são ambos
mail-transport-agents. Portanto, ambos exim e sendmail declaram que
disponibilizam um mail-transport-agent e outros pacotes que precisam de um
agente de transporte de mail dependem de um mail-transport-agent. Isto pode
adicionar uma grande confusão quando se tenta corrigir pacotes manualmente.
Em qualquer altura uma única dependência pode ser satisfeita por pacotes que
já estão instalados ou podem não estar. O APT tenta ajudar a resolver
problemas com dependências ao disponibilizar um número de algoritmos
automáticos que ajudam a selecionar os pacotes para instalação.