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.6:
- Em método CreateUpdateMonitor adicionado, permitindo que os aplicativos monitorem a disponibilidade de atualizações e solicitem a instalação da atualização disponível.
Para proibir o aplicativo de instalar atualizações automaticamente, pode-se usar o comando «flatpak permission-set flatpak updates $APPID no» (caso «ask» seja especificado em vez de «no», um diálogo de confirmação da atualização será exibido a cada vez); - Uma biblioteca foi proposta para simplificar a criação de manipuladores
libportal, que permite o tratamento de eventos sem o uso direto do API Portal e da análise de sinais recebidos via D-Bus.
Libportal fornece camadas simples que funcionam de maneira assíncrona para a maioria dos ««; - Um novo privilégio «—socket=cups» foi adicionado para fornecer acesso direto ao servidor de impressão CUPS;
- O protocolo e o API para manipulação de autenticação foram alterados. Um autenticador para OCI (Open Container Initiative) foi adicionado. Suporte à instalação automática de autenticadores de repositórios externos do flatpak foi implementado. Um manipulador de callback foi adicionado ao FlatpakTransaction para usar autenticação por login e senha de maneira semelhante ao método de autenticação HTTP básico;
- Suporte a aplicativos e sistemas protegidos, que exigem autenticação durante o carregamento, foi adicionado;
- A camada utilizada para isolamento bubblewrap foi atualizada para a versão ;
- Suporte opcional a controle parental foi adicionado com a aplicação da biblioteca , permitindo restrições de acesso a determinados tipos de conteúdo;
- As extensões agora são instaladas antes do aplicativo, permitindo que o aplicativo funcione imediatamente após a conclusão da sua instalação;
- As operações com arquivos temporários foram reavaliadas, melhorando o desempenho em condições de espaço em disco insuficiente;
- Para executar o comando «» não é mais necessário usar sudo;
- Nos portais, foi adicionada a capacidade de executar ambientes isolados aninhados (sub-sandbox) para processos filhos;
- Novos comandos «flatpak permission-set» e «permission-remove» foram adicionados para gerenciar a configuração de permissões;
- Uma opção «flatpak install —or-update» foi adicionada, que realiza a atualização se o aplicativo já estiver instalado;
- Adicionada a equipe «flatpak mask» para fixar a versão e proibir a instalação de atualizações;
- Para imagens no formato OCI (Open Container Initiative), foi adicionada suporte para vinculação de rótulos, geração de histórico de alterações na imagem e inclusão de tipos mime do Docker, além dos tipos mime do OCI;
- Nas configurações, foi adicionada a chave default-languages para definir a lista de idiomas utilizados, em adição à lista do sistema.
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 um único contêiner universal sem a formação de builds separados para cada distribuição. Para os usuários preocupados com a segurança, o Flatpak permite executar aplicativos questionáveis em um contêiner, fornecendo acesso apenas às funções de rede e arquivos do usuário relacionados ao aplicativo. Para os usuários interessados em novidades, o Flatpak permite instalar as versões de aplicativos mais recentes e estáveis 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 atomicamente 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 por meio 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 criado é completamente independente da distribuição utilizada e, com as configurações corretas 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 através da saída via DRI, e da 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
