Existem muitas razões para isso, e um pouco da história é para colocar as coisas em perspectiva.
Lembre-se de que quando falamos de "Linux", estamos nos referindo a uma das muitas distribuições Linux . "Linux" é na verdade apenas um kernel do sistema operacional.
O objetivo original do Linux era criar um sistema baseado em Unix que rodasse em PCs (inicialmente o 386). O primeiro passo foi criar o próprio kernel. Enquanto Linus Torvalds estava trabalhando no kernel Richard Stallman estava trabalhando em seu próprio sistema Livre , sob o GNU (GNU's Not Unix) project . Para encurtar a história, os dois convergiram porque o GNU tinha os utilitários associados (compilador C / biblioteca / ferramentas de construção, shell, editores de texto, etc.), mas nenhum núcleo para executá-lo, e o Linux tinha o núcleo, mas não tinha utilidades correr em cima dele para torná-lo útil para as massas.
Essa convergência veio a ser conhecida de forma um pouco oficial como GNU / Linux. Você verá que muitas distribuições ainda se referem a si mesmas como distribuições GNU / Linux.
Por causa da natureza Livre e Aberta do GNU / Linux, qualquer um poderia pegá-lo e criar um sistema integrado para seus gostos específicos. O resultado foi que muitos fluxos diferentes de métodos de configuração variados foram usados para criar esses sistemas, o que teve o efeito colateral de criar quase tantos sistemas de gerenciamento de pacotes diferentes para se adequar a cada um deles.
Cada sistema completo diferente tinha seus próprios seguidores strongs que ficaram com eles ao longo dos anos, resultando no que temos hoje: um punhado de sistemas de gerenciamento de pacotes amplamente usados, profundamente enraizados e estáveis, como RPM , APT / dpkg e Portage do Gentoo.
Existem projetos, como Autopackage , que estão tentando resolver o problema, mas a evolução contínua dos vários meios de sistemas de gerenciamento de pacotes suportados há muitos alvos móveis a seguir.
O que alguns fornecedores de software acabam fazendo é agrupar os binários específicos e as cópias de dependências de que precisam em um pacote grande que funcionará em sistemas específicos.