Conceitos básicos

O Flatpak pode ser entendido através de um pequeno número de conceitos-chave. É útil estar familiarizado com isso antes de aprender sobre como usar o Flatpak na linha de comando ou usá-lo para criar aplicativos.

_images/diagram.svg

Runtimes

Os runtimes fornecem as dependências básicas usadas pelos aplicativos. Cada aplicativo deve ser construído em um runtime, o qual deve ser instalado em um sistema host para que o aplicativo seja executado (o Flatpak pode instalar automaticamente o runtime exigido por um aplicativo). Vários runtimes diferentes podem ser instalados ao mesmo tempo, incluindo versões diferentes do mesmo runtime.

Os runtimes não se vinculam à distribuição e independem de versões específicas de distribuição. Isso significa que eles fornecem uma base estável entre diferentes distribuições para aplicativos e permitem que os aplicativos continuem funcionando independentemente das atualizações do sistema operacional.

Bibliotecas empacotadas

Se um aplicativo exigir dependências que não estejam em seu runtime, elas poderão ser agrupadas como parte do aplicativo. Isso oferece aos desenvolvedores de aplicativos flexibilidade em relação às dependências que eles usam, incluindo o uso de:

  • bibliotecas que não estão disponíveis em runtime

  • versões diferentes de bibliotecas daquelas que estão em runtime

  • versões corrigidas (com patch) das bibliotecas

Sandboxes

Com o Flatpak, cada aplicativo é criado e executado em um ambiente isolado, chamado de “sandbox”. Cada sandbox contém um aplicativo e seu runtime. Por padrão, o aplicativo pode acessar apenas o conteúdo de seu sandbox. O acesso a arquivos do usuário, rede, soquetes gráficos, subsistemas no barramento e dispositivos deve ser concedido explicitamente. O acesso a outras coisas, como outros processos, é deliberadamente não possível.

Por necessidade, alguns recursos que estão dentro do sandbox precisam ser expostos do lado de fora, para serem utilizados pelo sistema host. Eles são conhecidos como “exportações”, pois são arquivos exportados do sandbox e incluem itens como o arquivo .desktop e ícone do aplicativo.

Portais

Portais são um mecanismo através do qual os aplicativos podem interagir com o ambiente host a partir de um sandbox. Eles oferecem a capacidade de interagir com dados, arquivos e serviços sem a necessidade de adicionar permissões de sandbox.

Exemplos de recursos que podem ser acessados através de portais incluem a abertura de arquivos por meio de um diálogo de seleção de arquivos ou impressão. Os kits de ferramentas de interface podem implementar suporte transparente a portais, para que o acesso a recursos fora do sandbox funcione de maneira segura e imediata.

Mais informações sobre portais podem ser encontradas em Permissões de sandbox.

Repositórios

Normalmente, os aplicativos e os runtimes do Flatpak são armazenados e publicados usando repositórios, que se comportam de maneira muito semelhante aos repositórios Git. Um repositório Flatpak pode conter um único objeto ou vários objetos, e cada objeto é versionado, o que permite a atualização e até a desatualização.

Cada sistema que está usando o Flatpak pode ser configurado para acessar qualquer número de repositórios remotos. Depois que um sistema é configurado para acessar um “remoto”, o conteúdo do repositório remoto pode ser inspecionado e pesquisado, e pode ser usado como fonte de aplicativos e runtimes.

Quando uma atualização é executada, novas versões dos aplicativos e runtimes instalados são baixados dos remotos relevantes. Como no Git, apenas a diferença entre as versões é baixada, o que torna o processo muito eficiente.