Flatpak no Linux

4 minutos, Postado por Marlon Luan em

Flatpak é um formato de empacotamento e distribuição de aplicações para Linux focado em portabilidade, isolamento e independência da distribuição. Seu objetivo é permitir que aplicações sejam executadas de maneira consistente em diferentes distribuições Linux, reduzindo problemas de dependências e incompatibilidades entre versões de bibliotecas do sistema.

O Flatpak utiliza sandboxing para restringir o acesso da aplicação ao sistema operacional, além de runtimes compartilhados para reduzir duplicação de bibliotecas entre aplicações.


Arquitetura do Flatpak

A arquitetura do Flatpak é composta principalmente pelos seguintes elementos:

Aplicações

Os pacotes de aplicações contêm o software distribuído ao usuário final. Cada aplicação possui:

  • Arquivos binários
  • Metadados
  • Permissões
  • Dependências específicas

Exemplo de identificador:

org.mozilla.firefox

Runtimes

Runtimes são conjuntos compartilhados de bibliotecas e componentes básicos utilizados por múltiplas aplicações.

Exemplos:

  • Freedesktop Runtime
  • GNOME Runtime
  • KDE Runtime

Vantagens:

  • Redução de espaço em disco
  • Padronização de ambiente
  • Menor duplicação de dependências

SDKs

SDKs são ambientes de desenvolvimento associados aos runtimes. Contêm:

  • Compiladores
  • Headers
  • Ferramentas de build

São utilizados principalmente por desenvolvedores para construir aplicações Flatpak.


OSTree

O Flatpak utiliza OSTree como mecanismo de armazenamento e versionamento.

Características:

  • Atualizações incrementais
  • Deduplicação de arquivos
  • Versionamento eficiente
  • Rollback de versões

Sandboxing

O isolamento de aplicações é implementado principalmente através de:

  • Namespaces do Linux
  • cgroups
  • seccomp
  • Bubblewrap (bwrap)

Por padrão, aplicações Flatpak possuem acesso restrito a:

  • Sistema de arquivos
  • Dispositivos
  • Rede
  • Sessão gráfica
  • Processos externos

As permissões podem ser ajustadas explicitamente.

Exemplo:

flatpak override --filesystem=home org.mozilla.firefox

Repositórios

Aplicações Flatpak são distribuídas através de repositórios remotos.

O repositório mais utilizado é o Flathub.

Adição do Flathub:

flatpak remote-add --if-not-exists flathub \
https://flathub.org/repo/flathub.flatpakrepo

Listagem de repositórios:

flatpak remotes

Instalação

Fedora

O Fedora possui integração nativa com Flatpak.

Instalação do Flathub:

flatpak remote-add --if-not-exists flathub \
https://flathub.org/repo/flathub.flatpakrepo

Debian e Ubuntu

Instalação:

sudo apt install flatpak

Integração com GNOME Software:

sudo apt install gnome-software-plugin-flatpak

Arch Linux

Instalação:

sudo pacman -S flatpak

Gerenciamento de Aplicações

Pesquisa

flatpak search firefox

Instalação

flatpak install flathub org.mozilla.firefox

Execução

flatpak run org.mozilla.firefox

Atualização

flatpak update

Remoção

flatpak uninstall org.mozilla.firefox

Listagem

flatpak list

Diretórios Utilizados

Instalação por usuário

~/.local/share/flatpak

Instalação global

/var/lib/flatpak

Configurações e permissões

~/.var/app/

Cada aplicação possui um diretório isolado para armazenamento de dados e configurações.


Permissões

As permissões podem ser visualizadas com:

flatpak info --show-permissions org.mozilla.firefox

Exemplo de permissões comuns:

PermissãoFunção
--share=networkAcesso à rede
--filesystem=homeAcesso ao diretório pessoal
--socket=x11Acesso ao X11
--socket=waylandAcesso ao Wayland
--device=driAcesso à aceleração gráfica

Integração com Wayland e X11

Flatpak suporta tanto X11 quanto Wayland.

Wayland é preferível por oferecer:

  • Melhor isolamento
  • Menor exposição global de janelas
  • Maior controle de permissões gráficas

Aplicações podem utilizar:

--socket=wayland

ou:

--socket=x11

Atualizações Atômicas

Atualizações no Flatpak são atômicas.

Características:

  • Integridade transacional
  • Possibilidade de rollback
  • Menor risco de corrupção parcial

Rollback:

flatpak update --commit=COMMIT_ID

Vantagens

Independência da distribuição

O mesmo pacote funciona em múltiplas distribuições Linux.


Isolamento

Aplicações executam em sandbox com permissões controladas.


Dependências padronizadas

Redução de conflitos entre versões de bibliotecas.


Atualizações simplificadas

Atualizações centralizadas e consistentes.


Desvantagens

Uso adicional de espaço

Runtimes podem consumir espaço significativo em disco.


Inicialização potencialmente mais lenta

Aplicações Flatpak podem iniciar mais lentamente dependendo do sistema e da aplicação.


Integração parcial

Algumas aplicações podem apresentar limitações de integração com temas, portais ou dispositivos específicos.


Permissões excessivas

Algumas aplicações solicitam permissões amplas, reduzindo benefícios do sandbox.


Flatpak vs Pacotes Nativos

CaracterísticaFlatpakPacote Nativo
PortabilidadeAltaBaixa
Integração com sistemaParcialCompleta
IsolamentoSimNormalmente não
DependênciasEmbutidas/runtimeSistema
AtualizaçõesCentralizadasDistribuição
TamanhoMaiorMenor

Flatpak vs Snap

CaracterísticaFlatpakSnap
BackendOSTreeSquashFS
ControleComunitárioCanonical
Repositório central obrigatórioNãoPraticamente sim
Foco desktopForteModerado
SandboxingBubblewrapAppArmor/seccomp
Integração desktop LinuxMelhor em geralVariável

Portais

Flatpak utiliza XDG Desktop Portals para interação controlada entre aplicações sandboxed e o sistema.

Exemplos:

  • Seleção de arquivos
  • Compartilhamento de tela
  • Impressão
  • Captura de câmera

Isso reduz necessidade de permissões amplas.


Conclusão

Flatpak resolve limitações históricas de distribuição de aplicações no Linux através de isolamento, runtimes compartilhados e padronização de dependências.

Seu modelo melhora portabilidade e segurança, especialmente em ambientes desktop. Em contrapartida, introduz maior consumo de armazenamento e possíveis limitações de integração dependendo da aplicação e do ambiente gráfico utilizado.

comments powered by Disqus

Veja também: