por que o Ubuntu tem tantas dependências (.deb) e Windows e Mac não?

0

Eu tenho o Ubuntu 13.04 e queria perguntar por que os arquivos de instalação do software no Ubuntu têm tantas dependências, enquanto o Windows e o Mac não.

Quero dizer, quando eu baixo um arquivo .deb de software e o ligo para minha máquina off-line, o Centro de Software diz que o pacote x ou y está faltando.

    
por user177282 11.08.2013 / 14:43

2 respostas

3

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 pacote libjpeg8 (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 o texlive-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.

    
por gertvdijk 11.08.2013 / 14:55
4
% bl0ck_qu0te%

A vantagem é que você não faz o download acidental de várias cópias das mesmas dependências, o que pode ser o caso com o Windows. Lá e o instalador geralmente carregam cópias das dependências necessárias e as instalam em um local separado. O que causará problemas com o caminho quando o sistema encontrar a mesma coisa (ou pior, a mesma coisa em versões diferentes) em dois locais.

Fonte: Ajuda do Ubuntu

    
por Mitch 11.08.2013 / 14:46