Parece que foi ontem que a notícia surgiu, mas já fazem seis anos que a Canonical anunciou o lançamento do pacote Snap (Snappy) em conjunto com o lançamento do Ubuntu 15.10. Se você quiser ver como foi a nossa cobertura na época, pode acessar a reportagem aqui.
Desde então, muitas coisas mudaram e hoje em dia o empacotamento em Snap já é uma realidade, com ou sem polêmicas, está aí ajudando desenvolvedores e usuários a obterem os seus softwares para Linux. Na postagem de hoje vamos ensinar como instalar o Snap na sua distro (caso ela precise) e também mostrar em quais o pacote já vem pré-instalado e tudo mais. Bora lá.
Uma breve história do pacote Snap
O empacotamento em Snap ou Snappy foi desenvolvido pela Canonical, empresa que “faz” o Ubuntu, para ser implementado em aplicações em nuvem (cloud) mas, depois foi portado para sistema IoT (Internet das Coisas) e para Desktops.
Nos dias atuais, além das modalidades acima citadas, o snap pode ser usado para aplicações em servidores também.
Como funciona o Snap
Como o Flatpak, o Snap funciona em forma de contêiner fazendo com que o aplicativo fique isolado do sistema e que não interfira em nenhum outro. Também é utilizado a forma de “sandbox”, onde nesta “caixa” ficam todas as dependências e bibliotecas necessárias para que o app possa funcionar.
Um exemplo prático em que o contêiner pode ser útil. Imagine que você instalou o app CalculadoraDeFrete e ela precisa de uma lib ou dependência do sistema, vamos dizer que seja o arquivo cdf.x. Até aí tudo tranquilo, pois a sua CalculadoraDeFrete vai lá e “pega” essa lib e “vida que segue”. Mas vamos supor que depois de um tempo você vai lá e instala o app CalculadoraDeHoras e ela também precisa dessa lib cdf.x, até agora tranquilo, pois o app vai lá e “pega”.
Mas se você por alguma razão precisar remover essa lib cdf.x, os dois apps vão parar de funcionar. Utilizando o contêiner , você pode por cópias dessa lib (cdf.x) dentro das sandboxes CalculadoraDeFrete e CalculadoraDeHoras, assim você não corre o risco de ter os apps parando de funcionar.
Essa foi uma forma bem resumida de como o sandbox e o contêiner utilizados pelo Snap podem ajudar na distribuição de apps no Linux.
Segurança no Snap
Os snaps quando em execução tem um acesso limitado ao sistema do host (ou do usuário), o que torna a necessidade da utilização de alguma interface gráfica (podendo ser através da Snap Store por exemplo) ou através de comandos, para a liberação de algumas funcionalidades, como a gravação de áudio, acesso à WebCams, dispositivos USB e afins. Para gerenciar a segurança é utilizado o AppArmor, que é um Módulo de Segurança do Kernel Linux.
Conheça o SNAPD
O funcionamento do snap dentro da distro vai depender da instalação de um serviço para isso, que ficará rodando em segundo plano (background) para gerenciar e manter os snaps atualizados de forma automática. Esse serviço é o Snapd.
Agora se você quiser construir (build) e publicar os seus próprios snaps, vai precisar da ferramenta e do framework Snapcraft. E para distribuir o seu aplicativo em snap, você vai utilizar a Snap Store.
Os snaps suportam o compartilhamento de dados e de Unix sockets entre eles, com isso é possível compartilhar bibliotecas e frameworks entre os aplicativos, isso ajuda na redução do tamanho do Snap e também reduz duplicidades. Para auxiliar nesta tarefa é utilizado o sistema de compressão SquashFS, gerando um arquivo com a extensão .snap.
A minha distro tem ou não tem o Snap já instalado?
Por ser uma tecnologia desenvolvida pela Canonical, dona do Ubuntu, algumas distros já vem com o snap pré-instalado nelas, e não precisando fazer mais nada. As distros que já tem são:
Distros | Pré-Instalado? |
---|---|
KDE Neon | Sim |
Solus 3 e posteriores | Sim |
Ubuntu 16.04/18.04/20.04 LTS | Sim |
Manjaro | Sim |
Zorin OS | Sim |
Flavours do Ubuntu* | Sim |
*A flavour Lubuntu tem um “porém” em relação ao Snap, somente à partir da versão 18.10 do sistema o pacote snap passou a vir pré-instalado, nas versões entre a 14.04 e 18.04 LTS ele precisa ser instalado manualmente.
Mas, algumas distribuições preferem só trazer o pacote nos repositórios e deixar que o usuário escolha se quer ou não instalar o snap, e as distros são:
Distros | Pré-Instalado | Nos repositórios |
---|---|---|
Arch Linux | Não | Sim |
Debian | Não | Sim |
Fedora | Não | Sim |
openSUSE | Não | Sim |
Pop!_OS | Não | Sim |
CentOS | Não | Sim |
elementaryOS | Não | Sim |
Linux Mint* | Não | Sim |
*O Linux Mint a partir da versão 20 começou a bloquear a instalação do snapd. Para poder utilizá-lo é necessário remover o bloqueio, o processo para isso pode ser consultado aqui.
Instalando o Snap na sua distro
Para instalar o snap vamos dividir por base das distros, para facilitar as coisas e não ficar tão bagunçado assim.
Debian
Vamos começar pelas distros baseadas no Debian 9 (Stretch) ou Debian 10 (Buster), assim você vai precisar rodar os seguintes comandos:
sudo apt update
sudo apt install snapd
Se por acaso o sudo não estiver instalado, vai ser preciso “mudar” para o usuário root, o que muda um pouco os comandos necessários para a instalação. A sequência deles são:
su root
apt update
apt install snapd
Depois de instalado reinicie o sistema ou faça logoff para que os caminhos do snap sejam criados corretamente. Após isso, vai ser preciso instalar o core para receber as últimas versões do snapd, é o comando é:
sudo snap install core
Aí faça mais um logoff ou restart do sistema e o seu Debian já está pronto para usar os apps da Snap Store.
Ubuntu
Você pode estar estranhando que vou explicar como instalar o snap no Ubuntu, visto que mencionei alguns parágrafos acima que o mesmo já vinha com o pacote pré-instalado, mas sempre é bom deixar registrado como fazer a instalação corretamente caso você precise.
No Ubuntu, as versões entre a 14.04 LTS (Trusty Tahr) e a 15.10 (Wily Werewolf), incluindo as flavours oficiais, não tem o snapd pré-instalado, sendo necessário a instalação do mesmo, que você pode procurar no Ubuntu Software Centre (snapd) ou rodar os seguintes comandos:
sudo apt update
sudo apt install snapd
Depois é só reiniciar o sistema ou fazer o logoff e começar a usar os apps da Snap Store.
Agora, se você estiver utilizando o Ubuntu 16.04 LTS (Xenial Xerus) ou alguma versão acima, pode ir direto para a Snap Store e escolher os programas. A única exceção é o Lubuntu, que já explicamos acima.
Para saber qual versão do Ubuntu você está utilizando, basta rodar esse comando lsb_release -a no terminal e aí você terá a sua versão.
KDE Neon
O KDE Neon já vem com snap instalado, mas, se por algum motivo você quis remover ou removeu de forma acidental, não tem problema. A instalação é bem simples, pelo Discover basta procurar por snapd e mandar instalar.
Ou se preferir pode usar os seguintes comandos para isso, que são:
sudo apt update
sudo apt install snapd
Só esperar a instalação e pronto, Snap instalado novamente no seu KDE Neon.
elementary OS
O elementary OS é uma das distros que preferiram não mandar o snap já instalado no sistema, deixando assim a cargo do usuário. Então, se você preferir instalar o pacote basta rodar os seguintes comandos:
sudo apt update
sudo apt install snapd
Aí quando a instalação terminar, basta reiniciar o sistema ou fazer um logoff para poder usar os apps disponíveis na Snap Store.
Zorin OS
O Zorin OS tem o suporte nativo ao snap desde a versão 12.3, mas, se você estiver utilizando uma versão mais antiga ou removeu por engano, os comandos para instalar são:
sudo apt update
sudo apt install snapd
Terminada a instalação basta reiniciar o sistema ou fazer um logoff para poder usar os apps disponíveis na Snap Store.
Fedora
Se você estiver utilizando o Fedora e quiser instalar o snap nele, vai ser necessário alguns passos para isso, que veremos agora. Como o snapd já está nos repositórios basta executar o seguinte comando para isso:
sudo dnf install snadp
É só esperar a instalação completar, fazer o logoff e depois, login novamente no sistema. Ou reiniciar para garantir que os caminhos do snap sejam criados corretamente. Depois, você vai precisar ativar o suporte para o snap classic (alguns apps utilizam) criando links simbólicos entre o caminho /var/lib/snapd/snap e o /snap, o comando para isso é :
sudo ln -s /var/lib/snapd/snap /snap
Depois é só fazer novamente o logoff/login ou reiniciar o sistema.
openSUSE
Caso esteja utilizando a distro do camaleão, o procedimento é um pouquinho diferente dos que foram apresentados até agora. Os comandos abaixo servem tanto para a versão openSUSE Leap 15.x quanto para a versão Tumbleweed.
Primeiro vamos adicionar o repositório com o seguinte comando ( a versão Leap 15.2 foi usada como exemplo) :
sudo zypper addrepo --refresh https://download.opensuse.org/repositories/system:/snappy/openSUSE_Leap_15.2 snappy
*Se você estiver utilizando uma versão anterior da 15.2, será necessário trocar o final do link pela versão correspondente, ficando da seguinte forma:
Versão do openSUSE | Final do Link |
---|---|
openSUSE Leap 15.1 | openSUSE_Leap_15.1 |
openSUSE Leap 15.0 | openSUSE_Leap_15.0 |
openSUSE Tumbleweed | openSUSE_Tumbleweed |
Depois de adicionar o repositório, vamos agora importar a GPG key com o comando:
sudo zypper --gpg-auto-import-keys refresh
Agora vamos forçar um update no cache do repositório para incluir o snappy neles, rodando o seguinte comando:
sudo zypper dup --from snappy
Feito isso vamos instalar o snapd de fato, bastando rodar o comando:
sudo zypper install snapd
Depois de instalado, fazer o procedimento de logoff/login ou de reiniciar o sistema para que os caminhos (path) sejam criados corretamente.
Vamos agora habilitar e iniciar o serviço snapd com o seguinte comando:
sudo systemctl enable --now snapd
Para quem estiver utilizando a versão Tumbleweed, precisará rodar mais um comando para que o serviço snapd.apparmor seja habilitado e iniciado. Para que o snap funcione de forma correta, o comando é o seguinte:
sudo systemctl enable --now snapd.apparmor
Depois disso o seu openSUSE já está pronto para usar o snap.
Manjaro
Para quem estiver utilizando o Manjaro pode instalar o Snap através do Pamac (Manjaro’s Add/Remove Software application) procurando por snapd, selecionando e clicando em Aplicar (apply).
Mas, você pode fazer a instalação via terminal e vai precisar de alguns comandos para isso, começando com a instalação do snapd:
sudo pacman -S snapd
Depois de instalado precisamos que a unidade do systemd que faz a comunicação do snap com o socket seja habilitada, aí rodamos o seguinte comando:
sudo systemctl enable --now snapd.socket
Feito isso precisamos criar o link simbólico entre /var/lib/snapd/snap e /snap com o seguinte comando:
sudo ln -s /var/lib/snapd/snap /snap
Depois é só reiniciar ou fazer logoff/login que o snap já estará funcionando no seu Manjaro.
Para mais informações sobre a instalação do Snap em distros Linux, você pode consultar este link dedicado para isso.
Gerenciamento dos pacotes Snap
Para gerenciar os pacotes snaps nas distros você pode fazê-los através das lojas (Stores), que seria o modo gráfico ou através do terminal com alguns parâmetros. Para isso precisamos entender o conceito de Canais (Channels) do Snap.
Channels são de extrema importância para o Snap, pois é através deles que são definidos quais lançamentos de um snap será instalado e monitorado para atualizações. Existem subdivisões dentro dos Channels, que são tracks, risk-levels e branches com as respectivas funções:
- Tracks permitem que desenvolvedores de snap publiquem vários releases suportados de sua aplicação sob o mesmo nome de snap.
- Risk-levels representam um potencial progressivo de trade-off entre estabilidade e novas características.
- Branches são opcionais e possuem versões temporárias destinadas a ajudar na correção de bugs.
O nome completo de um canal é estruturado da seguinte forma: <track>/<risk>/<branch>
Se você quiser saber qual o “valor” do tracking de um snap instalado, com a saída do comando snap list você já vai encontrar em qual canal está.
Track (Rastreamento)
Os snaps têm um track padrão. Se o desenvolvedor do snap não especificar algum, o padrão é chamado de latest. Se nenhum track é especificado, o snap será instalado a partir do último track disponível. Os usuários podem especificar qual track querem usar, com o seguinte comando (o VLC foi usado como exemplo):
snap install vlc --channel=latest/edge
Risk-levels (Níveis de riscos)
Os Risk-levels (Níveis de riscos) indicam em qual estágio o programa empacotado no snap se encontra e os níveis são: stable, candidate, beta e edge. São classificados da seguinte maneira (segundo o pessoal do Snap):
- stable: para a grande maioria dos usuários que operam em ambientes de produção. Lançamentos neste nível de risco são tão estáveis como podem ser, de acordo com os padrões do projeto. Softwares de grande importância só chegarão a esta etapa quando estiver pronto para uso em produção. Há uma proposta de evitar quaisquer mudanças que possam perturbar estes usuários.
- candidate: para usuários que precisam testar atualizações antes da implantação stable ou para aqueles que precisam verificar se um problema específico foi resolvido. Os lançamentos das versões candidate são consideradas quase prontas para entrar no stable, mas precisam de alguma demonstração adicional no mundo real antes de avançar. O software que atinge esta etapa normalmente terá passado por todos os processos de QA (Quality Assurance ou Garantia de Qualidade) e revisão disponíveis, uma vez que os usuários que o acompanham esperam um alto nível de estabilidade. Quase nunca deve quebrar.
- beta: para usuários que desejam testar as últimas características, normalmente fora de um ambiente de produção. Beta é o primeiro nível para a estabilidade, o que era antes um fluxo rápido de mudanças. Projetos específicos podem utilizar terminologias ligeiramente diferentes para tais lançamentos (alfa, beta, etc.), mas todos eles são bem-vindos neste nível de segurança. Essas versões provavelmente já passaram por algum tipo de revisão e QA, mas ainda podem ter partes inacabadas. As modificações podem quebrar ainda e são relativamente comuns aqui.
- edge: para usuários que desejam acompanhar de perto o desenvolvimento. Os lançamentos edge frequentemente incluem um ritmo de mudanças sem QA ou revisões de garantias e são normalmente construídos automaticamente por um processo de CI baseado em um código fonte snapshot. Muitas vezes a CI só publicará após algum tipo de QA aprovado automaticamente, e as revisões de código continuam sendo uma boa prática, mas estas são específicas do projeto. Suponha que os lançamentos edge podem quebrar com frequência.
Quando você instala um snap por default (padrão) o risk-level dele é em stable, como por exemplo quando instalamos VLC com o comando sudo snap install vlc.
Para mudar de canal (channel) será preciso utilizar um parâmetro, que é o –channel e assim efetuar a mudança. Neste caso vamos mudar para o beta do VLC. O comando para isso é:
sudo snap install --channel=beta vlc
Se o snap escolhido não tiver a versão beta disponível, a próxima versão stable será instalada no lugar. Por praticidade basta utilizar esses parâmetros –stable, –candidate, –beta e –edge para indicar a versão que quer usar, ao invés de –channel=<risk-level>.
Com o app já instalado, você pode querer mudar o channel dele, para ver se tem alguma novidade ou bug corrigido. Se você utilizar o comando sudo snap switch –channel=stable vlc, será “forçado” a instalação de um novo snap e não a atualização do “antigo” snap. Caso queira essa opção, o comando para isso é:
sudo snap refresh --channel=stable vlc
Branches (Ramificações)
Os Branches são “subdivisões” usadas pelos criadores, de forma opcional, para aprimorar um snap já publicado, assim permitindo a criação de sequências curtas de snaps que podem ser lançadas sob demanda pelos desenvolvedores dos snaps, podendo ajudar com correções ou testes temporários.
Se após 30 dias não ocorrer mais nenhuma atualização no branch, ele será fechado automaticamente.
Ocupação de espaço em disco
Muitos vão se questionar se usar snaps “consome” muito do espaço em disco (SSD ou HDD) em comparação aos formatos .deb e flatpack. E, por incrível que possa parecer, o snap não consome muito de espaço, como abordamos neste artigo bem detalhado.
Outra questão comum é a velocidade em que se abrem os programas, isso pode variar muito de hardware para hardware, pois para mim pode abrir “rápido” e para você “lento”, então deixamos isso para outra conversa 😁.
Com isso abordamos as principais características e funções do Snap, e você poderá usufruir dele da melhor forma possível.
Nos vemos no próximo artigo, forte abraço! Confira nosso Feed RSS.