Flatpak no Linux
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ão | Função |
|---|---|
--share=network | Acesso à rede |
--filesystem=home | Acesso ao diretório pessoal |
--socket=x11 | Acesso ao X11 |
--socket=wayland | Acesso ao Wayland |
--device=dri | Acesso à 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ística | Flatpak | Pacote Nativo |
|---|---|---|
| Portabilidade | Alta | Baixa |
| Integração com sistema | Parcial | Completa |
| Isolamento | Sim | Normalmente não |
| Dependências | Embutidas/runtime | Sistema |
| Atualizações | Centralizadas | Distribuição |
| Tamanho | Maior | Menor |
Flatpak vs Snap
| Característica | Flatpak | Snap |
|---|---|---|
| Backend | OSTree | SquashFS |
| Controle | Comunitário | Canonical |
| Repositório central obrigatório | Não | Praticamente sim |
| Foco desktop | Forte | Moderado |
| Sandboxing | Bubblewrap | AppArmor/seccomp |
| Integração desktop Linux | Melhor em geral | Variá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.