Você está vendo o caminho de bibliotecas compartilhadas funcionar - neste caso, dependências. Um arquivo .deb
não é para ser portátil e instalável apenas por si só.
Em vez de incluir todas as coisas que um único aplicativo precisa, os componentes são separados em pacotes individuais. Se outro aplicativo puder reutilizá-los, poderá simplesmente depender dele em vez de ter várias cópias em seu sistema. Também é um software muito melhor testado e mais fácil de corrigir se algo for quebrado em uma biblioteca. Abaixo vou explicar essas vantagens um pouco mais.
-
Digamos que a biblioteca JPEG
libjpeg8
contenha um erro grave e suponha que você esteja executando 12 aplicativos que usam isso para exibir imagens JPEG. Então, se uma correção de bugs for lançada, nenhum dos aplicativos precisará ser corrigido, mas apenas o pacotelibjpeg8
(que é realmente pequeno). Isso economiza muito trabalho tanto para os desenvolvedores de aplicativos quanto para os usuários finais individuais que instalam as atualizações. Isso aumenta a segurança. -
Também ajudará a reduzir o tamanho do pacote de aplicativos. Digamos que você queira instalar um visualizador de imagens e já tenha a maioria das bibliotecas de formato de imagem instaladas, então isso reduzirá significativamente o tamanho do pacote. Seu gerenciamento de pacotes verá que apenas os poucos que faltam precisam ser instalados antes que o aplicativo esteja funcionando corretamente. Isso reduz o espaço em disco.
-
Também é possível ter funcionalidade opcional. Suponha que você esteja desenvolvendo um aplicativo e queira incluir um recurso, mas nem todo mundo precisa dele. Então você pode simplesmente adicionar uma dependência "recomendada" para que o recurso funcione somente se ele estiver instalado, mas os usuários não interessados não precisam instalá-lo. Isso é especialmente útil se a dependência for muito grande. É assim que a maioria dos meta-pacotes funciona, por ex.
texlive-full
é uma instalação completa do TexLive (1.5GB!) com todas as fontes recomendadas, mas você também pode instalar otexlive-base
para ter apenas a funcionalidade básica (~ 100MB). Isso reduz o espaço em disco (se for escolhido). -
Depois, há o princípio de responsabilidade única no desenvolvimento de software. O pacote tem um conjunto definido de funcionalidades bem claro que ele fornecerá e o fará bem. O software será testado muito melhor e mais eficiente do que os trechos de código incluídos em um aplicativo grande que contenha código a ser verificado por completo. Além disso, um desenvolvedor nem sempre precisa reinventar a roda. Uma biblioteca JPEG já existe? Então por que não reutilizá-lo? A Reusabilidade aumenta a velocidade de desenvolvimento e a qualidade geral do software.
-
Outro motivo é o consumo de memória. Se uma biblioteca já estiver carregada na memória por um aplicativo e outra quiser usá-la também, ela não precisará ser carregada novamente na memória. Portanto, o visualizador de imagens e o navegador da Web apenas compartilharão a biblioteca libjpeg8 já carregada. Isso reduz o tempo de carregamento e a memória .
A aplicação do Windows é geralmente muito portátil. A maioria das bibliotecas está estaticamente incorporada nos instaladores e é por isso que uma instalação típica do Windows é tão grande. Além disso, os patches têm que ser implementados individualmente, por isso é um dos motivos pelos quais você vê tantos atualizadores individuais, por exemplo, "Adobe Updater", "HP updater", "atualizador de Java", etc. Claramente, isso é muito menos eficiente.