Flatpak e AppImage: o futuro dos aplicativos para Linux

 Flatpaks já se tornaram o padrão de empacotamento de aplicativos em muitas distros



 
O método de instalação de novos aplicativos é uma da características centrais que separa os sistemas Linux do Windows. Ao invés de procurar por arquivos .exe pela internet, aumentando a nossa vulnerabilidade para malwares, no Linux as aplicações são todas gerenciadas por um gerenciador de pacotes, por onde baixamos, atualizamos, e organizamos todo o conteúdo na máquina. Uma lógica bem parecida com as App Stores popularizadas pelos dispositivos Android e iOS.

Contudo, esse formato tem seus problemas. Tradicionalmente, programas de Linux precisam ser programados para diferentes formatos, isto é, não só para diferentes arquiteturas de processador, como também diferentes distros. São distros demais para um desenvolvedor só dar conta, então sobra para as equipes responsáveis por manter a distro manterem versões compatíveis de diversos programas. E como são programas demais, nem sempre usuários recebem as versões mais atualizadas.

Outro problema grave dos pacotes tradicionais é a dependência de bibliotecas no sistema. Programas de Linux precisam de outros pacotes para funcionarem corretamente, e as vezes, um programa depende de uma versão em específico de um pacote, não funcionando com a versão do pacote que você já tem no seu sistema. 
 
Mas você não pode fazer o downgrade ou o upgrade desse pacote pois irá quebrar vários outros programas instalados, e em casos mais graves, pode até arruinar o seu sistema operacional. Gerando famoso "dependency hell". Confia em mim, eu já passei por essa dor de cabeça com o Pop!_OS, não foi legal.

E por fim, pacotes tradicionais precisam ser instalados com permissões root, abrindo o usuário para diversos riscos, pois o pacote instalado terá permissão para fazer quaisquer modificações no sistema. Daí que vem o problema de, algumas vezes, um programa desinstalar alguma biblioteca essencial pro sistema operacional funcionar, sem que o usuário perceba.
 
Por isso flatpak é tão importante. Aplicativos Linux empacotados em flatpak são universais, ou seja, funcionam em todas as distros, até nas que ainda não foram lançadas. Desenvolvedores só precisam se preocupar em publicar e manter uma versão do seu aplicativo.
 
Algumas distros, como Linux Mint, já vem com suporte nativo ao Flathub (loja de Flatpak)

 
Segundo que flatpaks já vem com todas as dependências embutidas em si mesmo. Aplicativos flatpak não dependem de bibliotecas e pacotes do sistema para funcionarem. Isso tem um custo de aplicativos ocuparem mais espaço de armazenamento do que pacotes tradicionais, porém, são muito mais seguros assim, sem correr o risco de instalar pacotes duplicados. É garantia de que tudo irá funcionar.
 
Terceiro, flatpaks não precisam de permissão root para serem instalados. Você não precisa inserir a sua senha toda vez que for instalar ou atualizar um aplicativo flatpak. Aliás, atualizações de flatpaks são muito rápidas, bem mais veloz do que pacotes tradicionais.
 
Desde  versão 21.2 o Linux Mint já entrega atualizações para flatpaks direto do Gerenciador de Atualizações. Mais prático que usar o Terminal


Sandboxes também são outro aspecto importante dos flatpaks. Sandbox ainda não é perfeito, mas permite que você tenha maior controle de todas as permissões que o aplicativo tem dentro do seu sistema operacional Linux. Leva algum tempo para você se familiarizar com todos os comandos das permissões dos flatpaks, e por causa disso, eu recomendo utilizar o Flatseal, um aplicativo gráfico que te ajuda a gerenciar as permissões de todos os flatpaks instalados no seu sistema.
 
Flatseal te ajuda na hora de gerenciar as permissões dos flatpaks no seu sistema

 

Quando o Flatpak ainda não é recomendado

 
Na minha experiência de usuário houveram alguns casos específicos em que eu ainda continuo usando os pacotes tradicionais. O launcher da Steam tem uma versão para Linux em formato tradicional que funciona muito bem, nunca me deu problemas, então eu sigo usando ela ao invés do Steam em flatpak.
 
Ouvi dizer que o Steam em flatpak ainda tem algumas falhas de compatibilidade com alguns jogos, e dificuldades para acessar todo os sistemas de arquivo montados - o que particularmente é ruim para mim, que tem a biblioteca de jogos em um HD secundário.
 
 Flatpaks ainda tem problemas de compatibilidade com os temas do sistema. Não é um problema sério, apenas questão estética, mas pode incomodar usuários que gostam que seus aplicativos tenham todos o mesmo padrão de apresentação. A janela do Flatseal é um exemplo disso.
 
E por fim, a localização das pastas criadas por um aplicativo flatpak ficam em lugares diferentes dos aplicativos tradicionais. Novamente, isso não é um problema sério, é só questão de costume, mas tenha isso em mente. É uma das questões pela qual eu evito usar Steam em flatpak.

Ainda assim, flatpaks são uma ideia muito legal, capaz de tornar o uso de sistemas operacionais Linux muito mais simples para usuários comuns. Mas flatpaks não são a única proposta para substituir os pacotes tradicionais.

Tudo em um


A proposta do formato AppImage é simples: "um aplicativo = um arquivo". Todos os arquivos necessários para o funcionamento do aplicativo já vem embutidos dentro desse arquivo único. É só executar e pronto. Não precisa instalar, não precisa de privilégios de root. Não precisa de dependências externas. É uma proposta bem parecida com os programas .exe do Windows.

AppImage ainda não são tão populares quanto os flatpaks, talvez porque eles sejam tão soltos, como os programas portáteis no Windows. Significa que você terá que manualmente atualizar eles, ao baixar e substituir o AppImage por uma versão mais recente. Pessoalmente eu adoro isso, porque me permite ter acesso à diferentes versões de um mesmo aplicativo sem precisa instalar ou desinstalar nada. 
 
Isso é muito útil com emuladores, porque as vezes uma versão mais antiga de um emulador pode ter melhor performance no seu sistema, mas uma versão mais recente corrigi uma falha em outro jogo. AppImages permitem que você tenha múltiplas versões de um mesmo emulador tudo junto.

O único detalhe que você deve se ater com os AppImages é que, como eles não são feitos para nenhum distro específicas, você deve dar a permissão para o AppImage ser executado como um programa. Isso geralmente é feito por meio do comando no Terminal: 

$ chmod a+x [nome do aplicativo]*.AppImage

Edições mais recentes das distros mais populares permitem que você torne um AppImage executável direto do gerenciador de arquivos, sem precisar utilizar o Terminal. O Nemo do Linux Mint 21.2 adicionou essa função na janela de propriedades do arquivo. Clique na aba Permissões e marque a caixa "Permitir a execução do arquivo como um programa". Daí é só iniciar o AppImage dando dois cliques nele e pronto.



Como podemos ver, o futuro da distribuição de programas no Linux é brilhante, e as coisas só tendem a ficarem mais fácil, garças à dispositivos como o Steam Deck popularizando a utilização de flatpaks como o formato padrão de instalação de novos aplicativos.

Comentários