Pacotes Snap

Ubuntu 22.04 LTS trouxe vários pacotes Snap. Entenda como funcionam, o que comem, como se reproduzem e principalmente: Como removê-los!


| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. 
Mais detalhes clicando aqui.


Quando me refiro a Sabores, me refiro a toda a família Ubuntu:

De forma geral o que for mencionado aqui vale para todos os demais!

1. Introdução

Desde o princípio o Ubuntu é um sistema baseado no Debian, que utiliza pacotes em formato .deb e gerenciados pelos gerenciadores apt, aptitude e dpkg.

E tal qual, diversas distribuições Linux tem formatos de empacotamento diferentes: yum, dnf, pkg, etc… E mais: Surgiram novos formatos que trouxeram a promessa de “unificar” os sistemas, como o caso do Flatpak e do Appimage.

Com olhos para evitar a super-fragmentação dos pacotes Linux dentre as diversas distribuições existentes, a Canonical investiu nos pacotes Snap!

2. Snap

Os pacotes Snap do Ubuntu são um dos legados deixados pela Canonical da época da expansão do Ubuntu para dispositivos móveis, da época em que o Ubuntu Phone estava em desenvolvimento.

Ubuntu Phone Recap 2020

Este completo e aperfeiçoado ambiente de pacotes esteve presente em todo o projeto do Ubuntu Phone e devido às suas qualidades, foi estendido ao Ubuntu Desktop e hoje possui versões para várias outras distribuições Linux.

A principal qualidade dos pacotes Snap é que eles funcionam como pequenas máquinas virtuais, contendo tudo que precisam para seu funcionamento. Com isso, um único pacote Snap criado pelo desenvolvedor, passa a ser compatível com qualquer distribuição Linux, sem necessidade de reempacotamentos específicos para cada distribuição ou versão de sistema operacional!

Inicialmente, o foco dos pacotes Snap estava nos Apps compatíveis com Ubuntu Phone e Ubuntu Desktop, mas hoje, a quantidade de pacotes Snap do Ubuntu está aumentando rapidamente, e várias aplicações famosas como LibreOffice, Telegram, Krita, Kdenlive, Mozilla Firefox e Chromium, entre outras, já estão disponibilizando versões de seus programas no formato.

2.1 Detalhando

“Snap” refere-se ao tanto ao comando “snap” quanto a um arquivo de instalação snap.

De forma resumida, um snap agrupa um aplicativo, no caso um binário, e todas as suas dependências em um grande arquivo compactado. As dependências podem ser arquivos de biblioteca, servidores de banco de dados ou qualquer outra coisa que um aplicativo deva ter para iniciar e executar.

Você pode até pensar que um snap é descompactado e seus arquivos extraídos no momento da instalação. Porém, é na hora de executar que o arquivo snap é montado em um dispositivo loop. Isso permite que o sistema de arquivos SquashFS interno do arquivo seja acessado e finalmente montado.

2.2 Contêiner

É correto afirmar que Snap é nada mais, nada menos que um pacote em forma de Contêiner, como o famoso Docker.
Contêineres são um meio termo entre máquina virtual e sistema legado, permitem executar aplicações de forma “enjaulada”, compartilhando recursos de hardware tal qual uma máquina virtual porém também compartilham de algumas dependências de sistemas – como acesso ao próprio kernel linux daquele sistema – o que os tornam mais leves que as máquinas virtuais.

É uma forma de isolar aplicações e fazê-las funcionarem quase que independentemente do sistema operacional utilizado, desde que este seja Linux – Um contêiner Linux só roda sob Linux, tal qual um Contêiner Windows só roda sob Windows.

Vantagens á parte, um contêiner obviamente consome mais recursos de hardware que um pacote comum, porque executa de forma paralela e sem controle direto do usuário para tal. E no caso do Snap a situação é ainda mais delicada.

3. Polêmica…

A polêmica em torno do “ódio” aos Snaps começa pela forma como ele foi desenvolvido.

Seja em seu funcionamento, seja em “tamanho”, consumo de hardware, diversos são os motivos que tornam o Snap, aos olhos dos usuários Linux, inferior á outros métodos de empacotamento.

3.1 Argumentos e Contra-Argumentos

Dentre os argumentos a favor dos Snaps temos

  • Instalações mais simples porque evitam o inferno das dependências.
    Isso é o que ocorre quando um novo aplicativo não pode ser executado porque um recurso necessário não está disponível, é a versão errada ou sua instalação substitui os arquivos exigidos pelos aplicativos existentes para que eles não possam ser executados. – E geralmente forçar a instalação dessa dependência pode quebrar o sistema todo.
  • Os aplicativos são executados de maneira encapsulada, dentro de um contêiner, e protegida, de modo que seus dados não podem interferir nos arquivos do seu computador. Você pode até instalar várias versões do mesmo aplicativo, e elas não farão execução cruzada ou entrarão em conflito entre si, ficam isoladas.

E dentre os contra-argumentos, temos:

  • Snaps são mais lentos para iniciar, por consumirem mais CPU e RAM que o normal, devido á execução do contêiner de aplicação e á descompactação do SquashFS em tempo real, isso sendo mais perceptível em hardwares mais antigos.
  • Snaps ocupam mais espaço no disco rígido do que outras formas de empacotamento.
  • Snaps são atualizados automaticamente.
    Ou seja, até o momento o usuário não tem qualquer controle se quer ou não atualizar ou pausar.
  • Os snaps podem não se adequar aos temas e layouts instalados na interface de usuário.
  • Snaps nem sempre são “oficiais”. Não há um padrão nesse aspecto.
    Eles geralmente são construídos por voluntários bem-intencionados que se identificam com a proposta da Canonical.

5. Remoção

Se até aqui você decidiu remover os pacotes Snap de seu sistema, aqui vão algumas informações pertinentes.

  • Esteja atento a quais partes do sistema são vinculadas aos pacotes Snap!
    Dependendo do que você remover, perderá alguma ferramenta ou funcionalidade.

Com o comando:

$ snap list

Você verá a lista do que é Snap instalado em seu sistema. Dependendo do sabor, a listagem de aplicações pode ser maior ou menor. No caso do Ubuntu 22.04 padrão, com interface Gnome Shell, os pacotes são: Snap Store (Ubuntu Software), Firefox, tema padrão e alguns pacotes de núcleo.

Já no caso do Ubuntu MATE 22.04, em vez da Snap Store, você terá o Snap da Software Boutique. Cada Sabor tem seus próprios pacotes únicos!

6. Consequências

Remover um pacote Snap não é difícil, você precisará estar atento a algumas questões.

  • Remover um Snap que compõe TEMAS NÃO quebra os temas já em uso, ou seja, aplicados!
    Os temas Yaru por exemplo continuarão no sistema. Você apenas perderá os updates/correções daquele tema – polimento de imagens, ícones, animações, resolução de ícones, melhorias do tipo. Mas o tema continuará aplicado e funcional.
  • Se remover a Snap Store (Ubuntu) ou a Software Boutique (Ubuntu MATE) você ficará sem uma loja de aplicativos no sistema. Em alternativa você pode instalar pacotes .deb de sites oficiais, de repositórios ou via apt install.
    Porém atentos: Há pacotes, como o Firefox, que se for instalado via apt install ele irá baixar novamente os pacotes Snap e será instalado em formato Snap, de forma obrigatória! Uma alternativa ao Firefox é o Firefox-ESR, fornecido normalmente como um pacote em apt install.

Até o momento pacotes Snap não são essenciais para o sistema operacional funcionar.

Com relação á Software Boutique – que exceto o Firefox, ainda fornece tudo via apt install – você pode instalar tudo o que precisar e depois remover a loja, para tornar tudo mais prático.

6.1 Removendo

Para remover um pacote snap, use o comando no terminal:

$ snap list

para listar todos, então:

$ sudo snap remove PACOTE

para remover um pacote!
Por fim para desinstalar totalmente os Snaps do sistema, use:

$ sudo apt purge snapd

6.2 Bloqueando!

Para impedir que algo no Ubuntu traga os Snaps de volta, pelo mesmo método empregado pelo LinuxMint, abra o seguinte arquivo: /etc/apt/preferences.d/nosnap.pref com seu editor de textos favorito, com permissões de super usuário.

No terminal com NANO:

sudo nano /etc/apt/preferences.d/nosnap.pref

Adicione o seguinte código:

# To prevent repository packages from triggering the installation of snap,
# this file forbids snapd from being installed by APT.
Package: snapd
Pin: release a=*
Pin-Priority: -10

Salve com CTRL+O e em seguida ENTER para confirmar, feche com CTRL+X.

Após isso execute um sudo apt update, se tentar instalar o pacote snapd, o sistema dirá que o pacote não tem candidato à instalação ou que as dependências não foram satisfeitas!

7. Conclusão

Se o seu computador for razoavelmente moderno, a diferença de velocidade entre executar um snap ou um aplicativo normal não será tão discrepante.

Mas a questão de impedir a possibilidade de bloquear os pacotes Snap para não sofrerem updates, ou ainda de consumir mais espaço em disco – considerando que muita gente deve ter SSD pequeno de 120Gb – ou ainda usa HDDs de +500Gb – o que farão pacotes Snap serem ainda mais lerdos que o normal – com certeza é uma lista de contra-argumentos que desfavorece a adoção desse sistema de pacotes pela maioria dos usuários!

E você?
Usa pacotes Snap? Gosta deles?
Removeu eles?
Deixe nos comentários!

#UrbanCompassPony

Deixe um comentário