Lançamento do sistema de pacotes autossuficientes Flatpak 1.16.0

Após dois anos e meio de desenvolvimento, foi publicada uma nova versão estável da ferramenta Flatpak 1.16, que fornece um sistema para compilar pacotes autossuficientes que não estão vinculados a distribuições específicas do Linux e são executados em um contêiner especial que isola o aplicativo do restante do sistema. O suporte para executar pacotes Flatpak é garantido para Fedora, CentOS, Debian, Arch Linux, Gentoo, Linux Mint, Alt Linux e Ubuntu. Pacotes Flatpak estão incluídos no repositório do Fedora e são suportados nos gerenciadores de aplicativos nativos GNOME e KDE.

Principais novidades na versão Flatpak 1.16:

  • Foi realizada a transição para o uso do sistema de construção Meson. O suporte à construção utilizando a ferramenta Autotools foi encerrado. Agora, para compilar o Flatpak, é necessário ter Python instalado no sistema, com versão mínima de 3.5.
  • Implementado acesso compartilhado ao socket gssproxy, permitindo a autenticação via Kerberos em aplicativos executados em modo de isolamento sandbox.
  • Ao criar um socket para Wayland, foi utilizado a extensão security-context, através da qual o compositor servidor pode identificar e limitar aplicativos executados em modo de isolamento sandbox. Adicionada a opção "--socket=inherit-wayland-socket" para herdar um socket existente para Wayland.
  • Após a instalação ou atualização de aplicativos, é garantida a reinicialização automática da configuração do barramento de sessão D-Bus para capturar os novos serviços D-Bus exportados pelos aplicativos.
  • As distribuições agora têm a possibilidade de definir repositórios com pacotes Flatpak, usando o diretório "/usr/share/flatpak/remotes.d", além de "/etc/flatpak/remotes.d".
  • Trabalhou-se na divisão de grandes arquivos de código-fonte em pequenos módulos.
  • Adicionada a opção "--device=input" para acesso a dispositivos de entrada através de /dev/input.
  • Para o isolamento de aplicativos, foi utilizada a nova versão da ferramenta bubblewrap 0.11. Nas distribuições que compilam o Flatpak utilizando o executável bwrap do sistema, é necessária a versão mínima bubblewrap 0.11. A proteção contra a criação de espaços de nomes de usuários (user namespace) aninhados em ambientes de sandbox foi fortalecida.
  • Simplificada a configuração de idiomas adicionais. A definição de idiomas é baseada nas informações dos usuários fornecidas pelo serviço D-Bus AccountsService.
  • Aplicativos que utilizam isolamento sandbox aninhado, por exemplo, com base no motor WebKit, têm permissão para aplicar o protocolo AT-SPI para interagir com leitores de tela. Foi adicionada a opção "flatpak run —a11y-own-name" para escolher o barramento através do qual o acesso a recursos para pessoas com deficiência é realizado.
  • Ao executar o comando "flatpak run -vv ", é exibido todos os parâmetros aplicáveis de isolamento sandbox.
  • Foi adicionada a opção "—device=usb", assim como os parâmetros "—usb" e "—no-usb" para gerenciar o acesso do aplicativo a dispositivos USB.
  • Adicionada a compatibilidade com o framework KCompletion, utilizado para autocompletar chaves de pesquisa no KDE.
  • Adicionadas as variáveis de ambiente "FLATPAK_DATA_DIR" e "FLATPAK_DOWNLOAD_TMPDIR" para redefinir os diretórios de dados ( /usr/share/flatpak ) e arquivos temporários de download ( /var/tmp ).
  • Foi adicionada a saída de sequências de escape para mostrar o progresso da execução de operações em emuladores de terminal.

Lembramos que o Flatpak facilita a distribuição de 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, que livra os desenvolvedores da necessidade de criar versões separadas para cada distribuição. Para os usuários preocupados com a segurança, o Flatpak permite executar um aplicativo questionável em um contêiner, fornecendo acesso seletivo apenas às funções de rede necessárias e arquivos do usuário. Para os usuários interessados em novidades, o Flatpak permite instalar as versões de teste e estáveis mais recentes de aplicativos sem necessidade de fazer alterações no sistema. Por exemplo, pacotes Flatpak são disponibilizados para LibreOffice, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Telegram Desktop, Android Studio, entre outros.

Para reduzir o tamanho, o pacote inclui apenas as dependências específicas do aplicativo. As bibliotecas básicas do sistema e gráficas (GTK, Qt, bibliotecas GNOME e KDE, etc.) são fornecidas na forma de ambientes de runtime genéricos plugáveis. A principal diferença entre Flatpak e Snap é que Snap utiliza componentes do ambiente do sistema principal e isolamento baseado na filtragem de chamadas do sistema, enquanto Flatpak cria um contêiner separado do sistema e opera com conjuntos grandes de runtime, fornecendo como dependências não pacotes, mas ambientes de sistema genéricos (por exemplo, todas as bibliotecas necessárias para executar programas GNOME ou KDE).

Além do ambiente do sistema padrão (runtime), que é instalado através de um repositório específico, são fornecidas dependências adicionais (bundle) necessárias para o funcionamento do aplicativo. Juntas, o "runtime" e o "bundle" formam o conteúdo do contêiner, sendo que o "runtime" é instalado separadamente e vinculado a vários contêineres, permitindo evitar a duplicação de arquivos do sistema compartilhados entre os contêineres.

Em um sistema, podem ser instalados vários "runtime" diferentes (GNOME, KDE) ou várias versões de um único "runtime" (GNOME 46, GNOME 47). O contêiner de um aplicativo utiliza a vinculação apenas a um "runtime" específico, sem considerar pacotes individuais que formam o "runtime" escolhido. Todos os elementos ausentes são empacotados diretamente com o aplicativo. Ao criar um contêiner, o conteúdo do "runtime" é montado como a partição /usr, e o "bundle" é montado no diretório /app.

O conteúdo do "runtime" e dos contêineres de aplicativos é formado utilizando 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 para um estado anterior). Os pacotes RPM são traduzidos para o repositório OSTree através de uma camada chamada rpm-ostree.

A instalação seletiva e a atualização de pacotes dentro do ambiente de trabalho não são suportadas — o sistema é atualizado não a nível de componentes individuais, mas como um todo, alterando atômica e completamente seu estado. São fornecidos meios para a aplicação incremental de atualizações, eliminando a necessidade de substituir toda a imagem a cada atualização.

O ambiente isolado é totalmente 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, além de não poder acessar diretamente o hardware, exceto através da saída via DRI. A saída gráfica e a organização da entrada são realizadas utilizando o protocolo Wayland ou através do redirecionamento de socket X11. A interação com o ambiente externo é baseada em um sistema de mensagens DBus e uma API especial chamada Portals.

Para isolamento, é utilizada a camada Bubblewrap e tecnologias tradicionais de virtualização de container para Linux, baseadas no uso de cgroups, namespaces, Seccomp e SELinux. Para a saída de áudio, são utilizados PulseAudio ou PipeWire. Ao criar um pacote, o isolamento pode ser desativado, algo que desenvolvedores de muitos pacotes populares aproveitam para obter acesso total ao sistema de arquivos e a todos os dispositivos no sistema.

Por exemplo, os pacotes GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity e VLC são fornecidos com um modo de isolamento limitado, que deixa acesso total ao diretório home. Em caso de comprometimento de pacotes com acesso ao diretório home, apesar da presença da etiqueta "sandboxed" na descrição do pacote, um invasor pode executar seu código simplesmente alterando o arquivo ~/\.bashrc. Uma questão separada é o controle sobre as mudanças nos pacotes e a confiança nos construtores dos pacotes, que muitas vezes não estão ligados ao projeto principal ou às distribuições.

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