Por que os softwares não são empacotados em um único arquivo?

15

Nós vemos que a maioria dos softwares Windows é empacotada em um único arquivo executável. Quando clico duas vezes no arquivo Setup, ele configura todos os arquivos, binários e bibliotecas com ele.

Eu entendo a dependência do Ubuntu ou, mais geralmente, dos pacotes linux. Mas eu me pergunto, porque estes existem. Não é possível construir um único arquivo com todas as dependências? Quais são os problemas com este método?

Por favor, tente dar o motivo em detalhes.

    
por Anwar 16.06.2012 / 22:19

5 respostas

18

A principal razão pela qual as dependências não estão incluídas no próprio programa é para que os componentes do sistema possam ser facilmente atualizados.

Imagine que uma dependência é usada por cinco programas diferentes. Se uma vulnerabilidade de segurança for encontrada nessa dependência, somente uma cópia deverá ser atualizada, em vez de cinco cópias.

Para o usuário, não importa que vários pacotes precisem ser instalados - a instalação do software que você quer instala automaticamente suas dependências.

A principal diferença entre os pacotes .deb e .exe é que o software do Ubuntu não é publicado em um único arquivo. A principal diferença é todo o conceito de um repositório de software que contém pacotes, e que as atualizações podem ser facilmente fornecidas a partir de.

Às vezes, isso pode ser problemático para computadores sem conexão direta com a Internet. Existem ferramentas, como APTonCD , que ajudam a minimizar essas dificuldades.

    
por 8128 16.06.2012 / 22:57
4

Isso não é totalmente verdade. O software do Ubuntu geralmente vem em um único arquivo .deb. Sendo totalmente simplista (e impreciso), os arquivos .deb são o arquivo .exe correspondente para windows. Todos os programas, incluindo aqueles no Windows, usam dependências para outros arquivos no sistema operacional (bibliotecas). O processo de instalação é apenas mais ou menos explícito no SO diferente. Quando você usa o centro de software no Ubuntu para baixar um programa, você baixa apenas as dependências que não estão instaladas em seu sistema e os arquivos reais do programa. Isso evita que o sistema seja sobrecarregado com arquivos duplicados e duplique a funcionalidade que acabaria em conflitos.

Acredite ou não, a única diferença entre instalar um programa no Windows ou no Ubuntu é a quantidade de informações que eles fornecem aos usuários. O Windows acha que seus usuários são burros e não querem que eles saibam o que está sendo instalado ao executar um arquivo exe. No linux você obtém essa informação ... para alguns usuários é muito detalhe, mas outros (a maioria) realmente apreciam isso.

espero que faça sentido.

    
por leousa 16.06.2012 / 22:30
3

No Ubuntu, a maioria dos softwares vem em um único arquivo. É um arquivo de pacote *.deb debian que é baixado, descompactado e instalado a partir do gerenciador de pacotes.

Por que o Ubuntu não instala softwares de executáveis autoextraíveis como a maioria dos softwares do Windows?

Porque a extração automática de arquivos *.exe é uma proposta muito perigosa para aceitar.

As diferenças mais críticas entre executáveis auto-extraíveis e um sistema de empacotamento, como o debian / Ubuntu, são:

  • Segurança
  • Transparência
  • Controle mais granular

Mais detalhadamente:

Segurança

No mundo do Windows, você precisa confiar no único arquivo *.exe . Como alguém pode realmente ter certeza de que pode ser confiável? Como você pode até saber que instala algo? Como você pode ter certeza de que não faz outras coisas pelas costas?

No Ubuntu, todos os pacotes são assinados digitalmente, portanto, usando um arquivo de pacote separado - o gerenciador de pacotes (seja muon, synaptic, aptitude ou até mesmo straight apt) - você obtém o conteúdo verificado antes é até mesmo descompactado, muito menos instalado. Isso pressupõe, claro, que você confie nos repositórios. Eu prefiro confiar nos repositórios do Ubuntu (uma autoridade única) do que centenas de fontes diferentes, muitas vezes desconhecidas, para download.

Controle granular

Com um arquivo *.exe , você pode essencialmente fazer uma coisa: executá-lo. No Ubuntu você pode inspecionar o conteúdo do pacote, descrições, configurações, arquivos individuais, alterações mais recentes, correções de bugs, etc. da conveniência do seu gerenciador de pacotes, antes decidir se instalar ou não. / p>

Quando você instala a partir de um arquivo *.exe , também precisa confiar no gancho 'desinstalar' (e nem todos os arquivos *.exe têm a garantia de um). No Ubuntu, todos os arquivos pertencentes a pacotes padrão instalados pelo gerenciador de pacotes, sempre podem ser desinstalados, porque isso é uma função do gerenciador de pacotes, não do próprio pacote. O gerenciador de pacotes é um aplicativo separado e confiável, que fornece o instalador e o desinstalador, o pacote não pode tirar o gancho de desinstalação de você. É claro que um pacote malicioso pode infiltrar coisas por meio de ações pós-instalação, mas é por isso que temos o sistema de repositório oficial e as mesmas pessoas em quem confiamos para mantê-las.

Transparência

Vai mais longe. No Ubuntu, posso realmente confiar no meu sistema, porque posso verificar o software em vários níveis. O último nível é poder olhar para o código-fonte. pacotes binários têm pacotes fonte correspondentes. Eu posso realmente olhar para a fonte (Exemplo: ' apt-get source bash ' vai te dar as fontes completas para o shell bash). No mundo dos arquivos * .exe, geralmente há apenas binários, e quem sabe o que eles realmente fazem nos bastidores?

Dito isso, sempre há exceções às regras, mas para mim segurança e confiança significam que não posso aceitar executar binários de centenas de fontes diferentes que são difíceis de verificar como uma maneira padrão de instalar componentes em meu sistema.

    
por arielf 25.06.2012 / 07:10
2

Além do que foi dito por outras pessoas, às vezes, um único software é dividido em vários pacotes, porque nem todos os recursos são relevantes para todos os usuários. Por exemplo, se a documentação de um programa for volumosa, ela geralmente será fornecida por um pacote separado. Isso permite que os usuários que não estão interessados nesses recursos opcionais economizem espaço em disco e largura de banda / tempo para download.

    
por omacs 17.06.2012 / 00:24
0

Vamos tentar compartilhar meu entendimento sobre as dependências (Sim, eu estava ciente do mérito do Ubuntu ou, mais geralmente, da maneira Linux de lidar com software. Eu simplesmente estava tentando reunir toda a boa opinião e razão de uma forma central, para que eu possa demonstrar alguns dos meus amigos) .

O Windows Softwares é na maioria das vezes empacotado em um único arquivo. Isso implica que eles não têm dependência?

Não, quase todos os softwares dependem de outros softwares. (A menos que o software seja de nível muito baixo e possa falar diretamente com o hardware, como o próprio sistema operacional) . Os softwares da Microsoft não estão livres de dependência. Então, a questão importante é: como eles lidam com isso?

Resposta: Eles lidam com isso da maneira tradicional. Assumindo que a maioria dos usuários é burra, eles simplesmente colocam toda a dependência no arquivo único, resultando em um software de tamanho maior (1 arquivado). Por exemplo, veja os jogos lançados para a Microsoft. Quase todos os jogos incluem configurações do DirectX, embora os usuários já possam ter versões atualizadas deles.

Aqui está algo que encontrei no Google sobre Por que o DirectX está incluído em todos os jogos.

  

Mesmo que uma versão posterior do binário já esteja instalada, essa versão não pode ser usada, e mesmo se a instalação do DirectX estiver atualizada porque você executou uma versão mais recente do instalador que não é garantida instalou todas as versões anteriores. Pior ainda, se uma versão for instalada para x86, não garante que a mesma versão seja instalada para x64, portanto, os jogos de 64 bits e 32 bits podem precisar executar a mesma versão do instalador, mas segmentar plataformas diferentes quando executadas.

clique aqui para ver o artigo completo. Está claro que eles não estão se saindo muito bem em lidar com a dependência.

Na maioria das vezes, independentemente das dependências já existentes, elas são fornecidas para ganhar simplicidade (para seus usuários) . Veja também quantos softwares incluem os componentes de tempo de execução do .NET. Outro exemplo da minha experiência: Uma vez eu baixei e instalei um software MS. Estando satisfeito com o processo, cliquei no ícone para abrir o software, só então ele me diz que "eu preciso do Java para rodar". Tal situação nunca ocorre em um mundo Linux através do gerenciamento de pacotes. (a menos que você tente baixar arquivos .deb do site do repositório e instalar clicando duas vezes, de maneira MS) .

Como o Linux lida com esse problema de dependência?

Bem, Linux ou Ubuntu não esconde o fato de que, você tem que ter dependências instaladas para usar o software (ao contrário da maneira da Microsoft). Mas quando você instalou os componentes, outro software que depende do mesmo componente usa as instalações instaladas anteriormente instaladas (ao contrário dos softwares de MS, incluindo todas as coisas).

    
por Anwar 17.06.2012 / 06:14