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


15

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

Eu entendo a dependência do Ubuntu ou mais geralmente pacotes linux. Mas eu me pergunto: por que isso existe? Não é possível criar 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.

Respostas:


17

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, apenas 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ê deseja instala automaticamente suas dependências.


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

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


2
às vezes importa com os usuários como nós, sem acesso adequado à Internet
Anwar

2
De qualquer maneira, eu odeio esse recurso porque minha internet está lenta. E partilha baixado ubuntu softwares são muito difíceis, (não sugiro fazer cópia de backup apt-cache Porque eu fazê-lo diariamente)
Tachyons

11
Mas então, você deve realmente amar o recurso! Porque, em vez de baixar uma biblioteca cinco vezes, basta fazer o download uma vez. Imagine que todos os programas em sua instalação do Ubuntu vieram com sua própria instalação GTK + ou Qt! Essas coisas são enormes .
Michael selvagem

4

Isso não é totalmente verdade. O software Ubuntu geralmente vem em um único arquivo .deb. Sendo totalmente simplista (e impreciso), os arquivos .deb são o arquivo .exe correspondente para o Windows. Todos os programas, incluindo os do Windows, usam dependências para outros arquivos no sistema operacional (bibliotecas). O processo de instalação é apenas mais ou menos explícito em diferentes sistemas operacionais. Ao usar o centro de software no Ubuntu para baixar um programa, você baixa apenas as dependências que não estão instaladas no seu sistema e os arquivos de programa reais. Isso evita que o sistema seja sobrecarregado com arquivos duplicados e funcionalidade duplicada que acabariam 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 essas informações ... para alguns usuários há muitos detalhes, mas outros (a maioria) realmente apreciam isso.

espero que faça sentido.


2
Absolutamente certo. Até outras distros (não tão boas quanto o Ubuntu) usam .rpms. O problema de um .exe, .deb ou qualquer outra coisa é que ele é basicamente um grande .tar que se extrai para lugares diferentes! No Windows, ele acessa Arquivos de Programas e mostra uma barra de progresso, mas no Linux mostra muito mais.
WindowsEscapist

11
Eu acho que a sugestão de que um arquivo exe seja como um arquivo tar grande está indo longe demais na direção da simplificação. Um arquivo tar não é executável. Um arquivo exe (naturalmente) é. Ou seja, com um arquivo deb (que na verdade é um arquivo tar), é o gerenciador de pacotes que lida com o processo real de movimentação de arquivos, para que o sistema possa acompanhar as coisas de maneira bastante elegante. Com um programa de instalação (como no Windows), é o próprio instalador fazendo isso. Ele pode conversar com alguns componentes do sistema para manter as coisas arrumadas, mas apenas se for necessário.
Dylan McCall

11
A melhor maneira de resumir isso é que o Windows possui fabricantes de programas instaladores como o InstallShield e o NSIS. Existem ferramentas como essa para Linux também. MojoSetup é popular. É aqui que às vezes você baixa um programa e ele possui um arquivo executável (geralmente terminando em .sh ou .run) e fornece um pequeno assistente. Geralmente, eles não conversam com o gerenciador de pacotes e funcionam muito como programas de instalação no Windows. Na mesma nota, o Windows Installer (com seus arquivos .msi) é algo de uma tentativa de limpar a bagunça em sua extremidade;)
Dylan McCall

Eu acho que os modos Linux são muito melhores que os modos Windows. Mas sim maneiras Windows são simples e fácil
Anwar

2
O formato de arquivo do Windows que corresponde .debé .msi.
Eliah Kagan

3

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

Por que o Ubuntu não instala software de executáveis ​​auto-extraíveis, como a maioria dos softwares Windows?

Como os *.exearquivos de extração automática são uma proposta muito perigosa a ser aceita.

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

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

Em mais detalhes:

Segurança

No mundo do Windows, você precisa confiar nesse único *.exearquivo. Como alguém pode realmente ter certeza de que pode ser confiável? Como você pode saber que ele instala alguma coisa? Como você pode ter certeza de que não faz outras coisas pelas suas costas?

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

Controle granular

Com um *.exearquivo, 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., com a conveniência do seu gerenciador de pacotes, antes de decidir se deseja instalar ou não.

Ao instalar a partir de um *.exearquivo, você também precisa confiar no gancho de 'desinstalação' (e nem todos os *.exearquivos têm 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ê. Obviamente, um pacote malicioso pode ocultar coisas através de ações pós-instalação, mas é por isso que temos o sistema de repositório oficial e as mesmas pessoas em que confiamos para mantê-los.

Transparência

Vai além. No Ubuntu, posso realmente confiar no meu sistema, porque posso verificar o software em vários níveis. O nível final é ser capaz de analisar o código-fonte. pacotes binários têm pacotes de origem correspondentes. Na verdade, posso olhar para a fonte (exemplo: ' apt-get source bash ' fornecerá as fontes completas para o shell bash). No mundo dos arquivos * .exe, geralmente existem 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 a execução de binários de centenas de fontes diferentes, difíceis de verificar como uma maneira padrão de instalar componentes no meu sistema.


2

Além do que foi dito por outros, à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 fazer o download.


0

Vamos tentar compartilhar meu entendimento sobre as dependências (Sim, eu estava ciente do mérito do Ubuntu ou, de maneira mais geral, do Linux em lidar com software. Eu estava simplesmente tentando reunir todas as boas opiniões e razões de maneira central, para poder demonstrar algumas dos meus amigos) .

Os softwares do Windows são geralmente empacotados em um único arquivo. Isso implica que eles não têm nenhuma dependência?

Não, quase todos os softwares dependem de outras peças de software. (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 Microsofts 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. Supondo 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 arquivo).
Por exemplo, consulte os jogos lançados para a Microsoft. Quase todos os jogos incluem configurações do DirectX, embora os usuários possam já ter versões atualizadas deles.

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

Mesmo se uma versão posterior do binário já estiver instalada, essa versão não poderá ser usada e mesmo se sua instalação do DirectX estiver atualizada porque você executou uma versão mais recente do instalador que não garante a instalação de todos os Versões prévias. Pior ainda, se uma versão é instalada para x86, ela não garante que a mesma versão seja instalada para x64; portanto, os jogos de 64 e 32 bits podem precisar executar a mesma versão exata do instalador, mas visando diferentes plataformas durante a execução.

clique aqui para obter o artigo completo. É claro que eles não estão indo muito bem ao lidar com a dependência.

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

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

Bem, Linux ou Ubuntu não esconde o fato de que você precisa ter dependências instaladas para usar o software (diferente da maneira da Microsoft). Porém, quando você instalou os componentes, outro software que depende do mesmo componente usa as dependências instaladas anteriormente instaladas (diferentemente dos softwares da MS, incluindo tudo).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.