Existem dois motivos pelos quais os aplicativos grandes vêm com bibliotecas agrupadas. Uma razão é que ele evita que os usuários tenham que rastrear todas as bibliotecas, descobrir qual pacote os contém em sua distribuição, garantir que eles tenham as versões corretas, etc. Manter pacotes binários que funcionam em todas as distribuições é complicado porque em um determinado ponto Com o tempo, as distribuições geralmente enviam diferentes versões de bibliotecas. Se o seu pacote é para uma determinada versão de uma determinada distribuição, então confiar na versão da distribuição não é um problema. Mas com o Arch Linux, devido à falta de versões estáveis, você terá que atualizar seu pacote com muita frequência se você não empacotar pelo menos as bibliotecas que mudam rapidamente.
O outro motivo para agrupar bibliotecas é que às vezes os programas têm dependências em versões de bibliotecas específicas. Em princípio, as bibliotecas têm números de versão de duas partes: um número de versão principal que muda sempre que a ABI¹ muda de uma maneira incompatível e um número de versão menor que muda sempre que algo muda (por exemplo, uma correção de bug ou um novo recurso que não quebrar a compatibilidade com versões anteriores). (Muitas bibliotecas têm um número de versão do formato MAJOR.MINOR, mas isso não é universal.) Binários de bibliotecas com diferentes versões principais têm sonames diferentes. , para que possam ser instalados juntos, ao passo que os binários de bibliotecas que diferem apenas por sua versão secundária têm o mesmo nome, de modo que somente um é encontrado por meio de vinculação dinâmica. Se o programa foi construído e testado para a versão 1.2, mas você tem a versão 1.3, o programa deve ainda funcionar. No entanto, às vezes, os programas usam interfaces não documentadas que não fazem parte da ABI e que podem ser quebradas em 1.3. Como o teste com todas as combinações de versão de biblioteca possíveis seria um pesadelo de suporte, os distribuidores de binários preferem que todos os usuários usem as mesmas versões de biblioteca (com uma exceção para algumas bibliotecas do sistema, especialmente a libc).
¹ Interface Binária do Aplicativo: a especificação da interface entre a biblioteca compilada e o programa compilado.