Além do fato de existirem muitos sistemas unix executados em diversas plataformas, considere apenas os problemas que o software Windows enfrenta nesse modal de distribuição, mesmo que eles realmente precisem se preocupar apenas com uma versão do Windows e uma plataforma (o PC )
Mesmo com apenas o PC para se preocupar, ainda existem duas arquiteturas: 32 bits e 64 bits. Se você notar, a grande maioria do software Windows simplesmente ignora 64 bits e envia apenas software de 32 bits, deixando-o com um software abaixo do ideal, se você tiver um sistema de 64 bits. Depois, existem bibliotecas. Um fornecedor de software não deseja que você receba erros estranhos ao executar o programa se você não tiver a biblioteca adequada já instalada, portanto, apenas inclua a biblioteca no programa (aumentando o download, mesmo se você já tiver essa biblioteca ) Um segundo programa faz a mesma coisa, mas com uma versão diferente da biblioteca. Na melhor das hipóteses, o programa B contém uma versão mais recente da biblioteca compatível com versões anteriores, portanto, se você instalar o programa B apósprograma A, as coisas funcionam, mas instalá-las na ordem inversa deixa você com a versão mais antiga da biblioteca e, portanto, o programa B é interrompido. Muitas vezes, porém, o fornecedor da biblioteca faz alterações que não são compatíveis com versões anteriores e não se incomoda em alterar o nome da biblioteca; portanto, não importa em que ordem você instala os dois programas, o primeiro será interrompido. Isso é chamado de "dll hell".
Infelizmente, para evitar isso, a maioria dos softwares do Windows recorreu ao envio de todas as suas bibliotecas em seu próprio diretório de programa em vez de em um diretório compartilhado, de modo que cada programa possui todas as suas próprias bibliotecas privadas e nunca será compartilhado entre si, o que derrota o todo ponto de dlls em primeiro lugar e você acaba usando muito mais memória e espaço em disco e tempo baixando todas as bibliotecas duplicadas.
É por isso que o software de código aberto é publicado na forma de código-fonte e os fornecedores de sistemas operacionais criaram gerenciadores de pacotes que resolvem os problemas de dependência e fazem o download apenas dos binários pré-compilados de que você realmente precisa, sem duplicar bibliotecas por todo o lugar. Isso também lida com o fato de que existem muitos sistemas unix diferentes que são executados em muitas plataformas diferentes.
apt
coisas?