Quais são as diferenças entre snaps, appimage, flatpak e outros?

105

Ultimamente, tenho recebido essa pergunta de alunos e, embora tenha muitas informações a oferecer, não encontrei uma fonte na qual possa apontar as pessoas para onde possam ler uma resposta atualizada (encontrei muitas informações incorretas e informações obsoletas ) Portanto, algumas das perguntas que tenho para formatos de pacote como snap, appimage, flatpak e outras nesta evolução de sistemas de empacotamento universal são:

  • Quem criou o formato do pacote?
  • Quais recursos ele oferece?
  • Quais recursos são exclusivos para ele? (Que os outros ainda não têm)
  • Quem apoia isso?
  • Quais distribuições o usam?
  • Qual o foco do pacote? (Para computadores, nuvens, dispositivos móveis, etc.)
  • Quais são mais ativamente desenvolvidos?
Luis Alvarado
fonte

Respostas:

68

Aqui está uma longa comparação tabular dos recursos AppImage vs. Snap vs. Flatpak. É da AppImage Wiki no GitHub :

Comparação AppImage vs. Snap vs. Flatpack

Kurt Pfeifle
fonte
43
Acho que vale ressaltar que este gráfico é construído a partir de uma perspectiva da AppImage. Ou seja, o conjunto de recursos padrão é o conjunto de recursos do AppImage e os outros são comparados aos seus recursos. Isso dá uma vantagem tendenciosa à AppImage. Também está um pouco desatualizado. Por exemplo, o Snap adicionou suporte a temas neste outono.
21418 Dan
1
@ Dan: Se você conhece o Snap, adicionou-lhes suporte - por que você simplesmente não edita no gráfico? Além disso, se você sabe sobre outros recursos que estão em Snap e / ou Flatpak: sensação convidado a alterar a tabela com os respectivos itens na wiki AppImage ...
Kurt Pfeifle
11
Não sei como você pode dizer isso @Kurt. Dê uma olhada na seção "Objetivos", como exemplo. Ele mostra os objetivos da AppImage exclusivamente, como se nenhum dos outros projetos tivesse objetivos. Como se apenas os objetivos da AppImage tivessem importância.
Dan
5
Eu entendo o seu ponto - eu poderia editar o wiki. No entanto, sua resposta é uma imagem gigante que provavelmente permanecerá como está em perpetuidade, mesmo quando o wiki muda. Eu acho que o viés vale a pena mencionar no contexto de sua resposta para futuros leitores do Ask Ubuntu.
Dan
2
@ Dan: Eu editei a resposta em 4 de julho para inserir uma versão atualizada da captura de tela do site (exatamente para incluir algumas modificações que aconteceram no wiki). Qual é o problema para você editar o Wiki original, criar uma nova captura de tela e sugerir uma modificação dessa resposta com a nova captura de tela?
Kurt Pfeifle
51

Os snaps foram criados pela Canonical para o Ubuntu. As principais vantagens dos snaps são:

  • Independência de dependências - todas as bibliotecas e dependências estão incluídas no pacote. Isso também permite ter mais versões do mesmo programa.
  • Sandbox - os snaps estão usando o AppArmor modificado para sandbox os aplicativos
  • Atualizações delta - os snaps também devem permitir atualizações delta

A principal desvantagem dos snaps é que o software pode usar apenas as bibliotecas incluídas em seu pacote. Esse é um risco potencial à segurança, pois o autor do pacote precisa manter todas as bibliotecas corrigidas e atualizadas.

Atualmente, os snaps podem ser executados no Ubuntu, Arch Linux, Fedora, Linux Mint, CentOS e Gentoo. Eles também são usados ​​no Ubuntu Touch. Eles são projetados para desktops, servidores, telefones, IoT e roteadores.

O Flatpak tem as mesmas vantagens que os snaps. No entanto, ele usa namespaces em vez do AppArmour para sandbox. A principal diferença é que o Flatpaks pode usar bibliotecas incluídas no pacote e bibliotecas compartilhadas de outro Flatpak.

O desenvolvedor do Flatpak é o funcionário da Red Hat, Alexander Larsson. O software Flatpak está atualmente disponível no Arch Linux, Debian, Fedora, Mageia, Solus e Ubuntu. Ele é focado apenas em desktops.

AppImages são desenvolvidos por Simon Peter. Como nos snaps ou no Flatpak, o pacote inclui todas as bibliotecas necessárias para executar o programa. Os programas AppImage não têm área restrita e não exigem direitos de root para serem executados. De acordo com o site do projeto, o AppImages deve rodar no Arch Linux, Centos, Debian, Fedora, OpenSUSE, Red Hat Linux e Ubuntu.

Magma
fonte
3
Solus anunciou suporte para flatpak em janeiro de 2017
Anthon
8
Todos eles deveriam ter construído sobre o appimage. Em vez de reinventar a mesma ideologia e introduzir fragmentação e confusão. Observe também que, como esses pacotes portáteis possuem todas as bibliotecas, eles serão consideravelmente mais pesados ​​em comparação com um aplicativo que usa bibliotecas compartilhadas instaladas via apt ou .deb. Se você precisa saber qual é o mais popular, o flatpak está atualmente superando os snaps.
answerSeeker
Com o ataque Spectre agora em estado selvagem, suspeito que haverá menos interesse em bibliotecas compartilhadas por razões de segurança. :-)
Chris
4
@answerSeeker: seu comentário sobre os pacotes portáteis serem "consideravelmente mais pesados ​​em comparação com um aplicativo que usa bibliotecas compartilhadas instaladas via apt ou .deb" não é necessariamente respaldado pelos fatos da vida real. AppImages e Snaps são compactados nas imagens do SquashFS (não é verdade no Flatpak). Eles nunca são extraídos para o disco, nem mesmo durante o tempo de execução. O AppImages, quando em execução, monta-se automaticamente em um ponto de montagem criado temporariamente /tmp/.mount_<random-chars>e executa a partir daí - ainda compactado! Veja os números do exemplo do LibreOffice na captura de tela da minha resposta abaixo ...
Kurt Pfeifle /
1
@ PabloBianchi: o AppImages mais recente (da variedade mais recente do 'tipo 2' ) pode ter um mecanismo de atualização embutido. Isso baixa um diff binário delta do local original da AppImage, economizando em tamanho e tempo de download, quando uma nova versão estiver disponível e depois que o usuário indicar que ele deseja. As ferramentas appimageupdatetool(CLI) e AppImageUpdate-Qt(GUI) ajudam com isso.
Kurt Pfeifle 23/02