Por que instalamos software via arquivos `.dmg`?

28

Quando quero instalar um software, normalmente baixa um .dmgarquivo (Disk iMaGe). Quando eu abri-lo, este .dmgarquivo se parece com o que eu chamaria um "disco virtual" (daí o seu nome presumo) e está listado no Findersob devices. Também está listado em Disk Utilityabaixo Disk Imagese parece que pode ser apagado ou desmontado como qualquer outro disco.

  • Qual é a lógica para a qual o software precisa ser instalado com um "disco virtual"?
  • Por que não vem como um arquivo binário simples ou não sei o quê?
Remi.b
fonte
12
Instalar o software sempre pode causar d um m um g e.
dessert
11
Um arquivo binário simples seria um instalador. Com o DMG, você apenas copia o aplicativo sem executar um instalador.
Thorbjørn Ravn Andersen
10
A maioria dos aplicativos para Mac se parece com arquivos únicos, mas na realidade são "pacotes de aplicativos", basicamente pastas com muitos arquivos. O Finder o exibe como uma entidade única, mas você pode clicar com o botão direito do mouse sobre eles e selecionar "Abrir conteúdo" para inspecionar os arquivos. Portanto, "binário simples" não funcionará.
el.pescado
4
Histórico: blog.barthe.ph/2011/04/05/dmg_history
Wayfaring Stranger
O último parágrafo deve ser uma pergunta separada, pois está dando origem a respostas separadas #
151519 user151019 13/17/17

Respostas:

34

Os DMGs têm alguns recursos importantes que os tornam superiores aos zips antigos simples

  • Eles são um sistema de arquivos completo (o que significa que eles podem armazenar permissões de arquivo, ter fundos de pastas personalizados etc.)
  • Eles suportam EULAs "obrigatórios" antes da montagem, o que é bom para assuntos legais
  • Forneça um ambiente de execução mais confiável. Se você precisar fazer um caminho absoluto para a instalação (o que não deveria), prepare o DMG, marque-o como somente leitura e use-o para instalar

Realmente, o principal recurso é que eles suportam o sistema de arquivos HFS + completo. O Zip (normalmente, as versões do Linux às vezes suportam permissões) é estúpido e suporta apenas o agrupamento de arquivos e pastas e nada mais. Sem metadados, apenas os arquivos.

Sirenes
fonte
14
Pontos adicionais: a partir da versão 10.12, os arquivos .dmg podem ser assinados por código de integridade (os arquivos .zip podem conter código assinado, mas não podem ser assinados de uma maneira que sobreviverá ao download). Além disso, a opção "binário simples" não funciona, porque a maioria dos softwares macOS vem como pacotes - pastas com estrutura interna complexa (oculta) - em vez de arquivos simples.
Gordon Davisson
9
"Zip é estúpido e só suporta ..." - Não concordo com essa avaliação. Só porque algo é simples, não significa que é estúpido. A simplicidade é uma virtude e raramente é (geralmente invisível) metadados de arquivo de qualquer valor em um instalador distribuído.
Dai
14
@Dai ele quer dizer estúpido como burro; o programa não sabe o que está fazendo - não que seja inútil.
Tim
3
Suponho que o ZIP não seja uma boa comparação. Por que não, por exemplo, TAR compactado tar.gz? Ele armazena permissões.
Ruslan
2
@Dai, "raramente é (muitas vezes invisível) metadados de arquivo de qualquer valor em um instalador distribuído" - verdade em muitas outras plataformas, mas a Apple tem um longo histórico de armazenamento de conteúdo crítico (por exemplo, ícones!) Em "forks de recursos" ( hoje em dia, xattrs).
Charles Duffy
3

O software Mac pode ser entregue como um .apppacote de aplicativos (essencialmente uma pasta que contém todos os recursos do programa) ou como um .pkginstalador, que é um programa que instala aplicativos de maneira semelhante ao Windows.

Somente ferramentas de linha de comando estão disponíveis como binários simples que seriam copiados para algum lugar do usuário PATH, como /usr/local/bin.

Eles podem ser empacotados em uma imagem de disco do OS X / macOS ( .dmg) ou em um formato de arquivo tradicional, como .zipou .tar.


Qual é a lógica para a qual o software precisa ser instalado com um "disco virtual"?

Isso depende em grande parte do desenvolvedor. A .dmgé apenas um disco rígido virtual, não um instalador. A escolha de utilizar a .dmgé sobre embalagem e não sobre instalação.

Se um aplicativo é um .apppacote simples, ele é independente e pode ser executado clicando duas vezes nele. É geralmente copiado /Applicationspara conveniência.

Além da criptografia e dos EULAs na abertura, o benefício de um .dmgtipo sobre um arquivo é a marca. .dmgs podem receber ícones personalizados, imagens de fundo personalizadas e o layout do conteúdo pode ser corrigido. .dmgs geralmente também são somente leitura, para que o conteúdo permaneça exatamente como o desenvolvedor pretendia.

Eles também forçam o usuário a selecionar onde eles gostariam de um aplicativo; quando você descompacta um arquivo, o conteúdo normalmente é extraído para onde quer que o arquivo esteja localizado. Por outro lado, .dmgs serão montados no sistema de arquivos e, em seguida, o .apppacote configurável deverá ser explicitamente copiado.


Por que não vem como um arquivo binário simples ou não sei o quê?

Um aplicativo para Mac é mais do que apenas um binário. Além do binário (localizado em <appname>.app/Contents/MacOS/), um .appinclui vários recursos no <appname>.app/Contents/Resources/. Esses recursos incluem ícones, gráficos e arquivos de localização, como en.lproj.

Wes Toleman
fonte
2

Existe algum outro uso para arquivos .dmg além da instalação do software?

Outro recurso útil sobre os DMGs (desde que você perguntou sobre outros usos) é a capacidade de criar um espaço de armazenamento criptografado e armazenar arquivos nesse espaço protegido. Útil se você deseja proteger alguns arquivos, mas não criptografar todo o disco rígido principal.

Consulte Utilitário de disco para o macOS Sierra: crie uma imagem de disco usando o Utilitário de disco para obter mais informações sobre a criação de arquivos .dmg criptografados.

Ken
fonte
A criptografia, no entanto, já é possível sem a necessidade .dmg. O Unix não criptografa?
Pacerier 14/02
@ Pacerier - com certeza - como tudo no Linux / Unix, há mais de uma maneira de fazer alguma coisa.
Ken