uma nova ramificação estável da ferramenta , que fornece um sistema para construir pacotes autossuficientes, independentes de distribuições específicas do Linux e executados em um contêiner especial, que isola o aplicativo do restante do sistema. O suporte à execução de pacotes Flatpak está disponível para Arch Linux, , Debian, Fedora, Gentoo, Mageia, Linux Mint e Ubuntu. Pacotes com Flatpak estão incluídos no repositório Fedora e são suportados pelo gerente de aplicativos padrão GNOME.
Principais na ramificação Flatpak 1.4:
- Foi alterada a organização da configuração de parâmetros para repositórios externos. No diretório /etc/flatpak/remotes.d, em vez de arquivos *.conf com configurações, agora são aplicados arquivos padrão ‘.flatpakrepo’, que são importados automaticamente na primeira utilização do flatpak. Esses arquivos podem ser editados e excluídos livremente, semelhante a repositórios adicionados manualmente;
- A organização das instalações disponíveis para todo o sistema foi significativamente alterada. Em versões anteriores, o pacote era inicialmente instalado em um diretório temporário pertencente ao usuário, e então um processo system-helper era chamado para importar para o sistema a partir desse diretório. Essa abordagem causava um grande consumo de recursos de disco, entrada/saída desnecessária e potenciais problemas de segurança. Na nova versão, para instalar pacotes do sistema, um novo sistema de arquivos FUSE foi utilizado, onde o usuário pode gravar dados, mas após a gravação, o acesso aos arquivos gravados é bloqueado para o usuário. A nova abordagem implica a necessidade de criar um usuário separado para flatpak (por padrão, 'flatpak') e alterar as regras do SELinux;
- Adicionada a capacidade de definir filtros do lado do cliente para repositórios externos. Com os filtros, é possível restringir os aplicativos visíveis no repositório, utilizando um modelo de listas brancas e negras;
- Adicionada uma API de biblioteca para adicionar repositórios externos a partir de arquivos flatpakref;
- Adicionado um perfil seccomp para Docker, permitindo executar flatpak dentro de contêineres;
- Melhorada a capacidade de instalação a partir de várias fontes P2P (via unidades USB ou pela rede local);
- No comando «flatpak remote-ls» há filtragem automática de aplicativos cujo suporte expirou;
- No «flatpak remote-ls» e «flatpak remote-info» foi implementada a opção «—cached» para fornecer informações com base em dados locais armazenados em cache;
- Adicionada a possibilidade de especificar a versão de expiração do pacote, após a qual será sugerido a migração para uma nova ramificação;
- Adicionada a opção «—socket=pcsc» para acessar cartões inteligentes;
- Adicionada suporte para sistemas que possuem várias placas gráficas NVIDIA;
- Implementado suporte para o dconf inserido em ambientes sandbox;
- No comando build-update-repo foram adicionadas as opções «—no-update-[summary,appstream]» e «—static-delta-ignore-ref=PATTERN»;
- A velocidade de regeneração das ramificações do appstream para grandes repositórios foi significativamente aumentada.
Vale lembrar que a Flatpak oferece aos desenvolvedores a possibilidade de simplificar a distribuição de seus programas que não estão nos repositórios padrão das distribuições, através da de um único contêiner universal sem a necessidade de criar compilações separadas para cada distribuição. Para os usuários preocupados com a segurança, a Flatpak permite que aplicativos duvidosos sejam executados em um contêiner, proporcionando acesso apenas às funcionalidades de rede e arquivos do usuário relacionados ao aplicativo. Para os usuários interessados em novidades, a Flatpak permite instalar as versões mais recentes de testes e estáveis de aplicativos, sem a necessidade de modificar o sistema. Por exemplo, atualmente, os pacotes Flatpak já para LibreOffice, Firefox, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio, etc.
Para reduzir o tamanho do pacote, ele inclui apenas as dependências específicas do aplicativo, enquanto as bibliotecas gráficas e de sistema básicas (Gtk+, Qt, bibliotecas GNOME e KDE, etc.) são fornecidas como ambientes de execução típicos plugáveis. A principal diferença entre Flatpak e Snap é que o Snap utiliza componentes do ambiente do sistema principal e isolamento baseado na filtragem de chamadas de sistema, enquanto o Flatpak cria um contêiner separado do sistema e opera com grandes conjuntos de runtime, fornecendo como dependências não pacotes, mas ambientes de sistema típicos (por exemplo, todas as bibliotecas necessárias para o funcionamento de programas GNOME ou KDE).
Além do ambiente de sistema típico (runtime), instalado por meio de um , são fornecidas dependências adicionais (bundle) necessárias para o funcionamento do aplicativo. No total, runtime e bundle formam o conteúdo do contêiner, sendo que o runtime é instalado separadamente e vinculado a vários contêineres, o que permite evitar a duplicação de arquivos de sistema comuns aos contêineres. Em um sistema, podem ser instalados vários runtimes diferentes (GNOME, KDE) ou várias versões de um único runtime (GNOME 3.26, GNOME 3.28). O contêiner com o aplicativo, como dependência, usa apenas a vinculação a um runtime específico, sem considerar os pacotes individuais dos quais o runtime é composto. Todos os elementos ausentes são empacotados diretamente junto com o aplicativo. Ao formar o contêiner, o conteúdo do runtime é montado como a partição /usr, enquanto o bundle é montado no diretório /app.
O conteúdo do runtime e dos contêineres de aplicativos é formado usando a tecnologia , onde a imagem é atualizada de forma atômica a partir de um repositório semelhante ao Git, permitindo aplicar métodos de controle de versão aos componentes da distribuição (por exemplo, é possível reverter rapidamente o sistema a um estado anterior). Os pacotes RPM são traduzidos para o repositório OSTree com a ajuda de uma camada especial . A instalação e atualização separada de pacotes dentro do ambiente de trabalho não é suportada; o sistema é atualizado não ao nível de componentes individuais, mas como um todo, mudando seu estado de maneira atômica. São fornecidas ferramentas para a aplicação incremental de atualizações, eliminando a necessidade de substituir completamente a imagem a cada atualização.
O ambiente isolado formado é completamente independente da distribuição utilizada e, com as configurações adequadas do pacote, não tem acesso aos arquivos e processos do usuário ou do sistema principal, não pode acessar diretamente o hardware, exceto para a saída através do DRI, e à subsistema de rede. A saída gráfica e a organização da entrada usando o protocolo Wayland ou através de um redirecionamento do socket X11. A interação com o ambiente externo é baseada em um sistema de troca de mensagens DBus e uma API Portals especial. Para isolamento uma camada e as tecnologias tradicionais de virtualização em contêineres para Linux, baseadas no uso de cgroups, espaços de nomes (namespaces), Seccomp e SELinux. Para a saída de áudio, utiliza-se o PulseAudio.
Fonte: opennet.ru
