Lançamento da versão 1.4.0 do sistema de pacotes autossuficientes Flatpak

Publicado uma nova ramificação estável da ferramenta Flatpak 1.4, 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, CentOS, 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 novidades 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 preparação 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á são construídos 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 repositório, 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 OSTree, 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 rpm-ostree. 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 são implementadas 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 é utilizado uma camada Bubblewrap 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

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster