Como limpar versões de pacotes Snap no Linux

Como limpar versões de pacotes Snap no Linux

Um dos pontos negativos do Snap é que os pacotes geralmente são maiores em tamanho e tomam muito espaço em disco. Aqui está um truque legal que vai ajudá-lo a limpar pacotes Snap.

Os pacotes snap não são os favoritos de todos, mas são parte integrante do ecossistema do Ubuntu.

Tem seus prós e contras. Um dos pontos negativos é que os pacotes Snap geralmente são maiores em tamanho e tomam muito espaço em disco.

Isso pode ser um problema se você estiver ficando sem espaço em disco, especialmente na partição principal.

Vamos ver o que você poderia usar para cortar o uso do disco pelos pacotes Snap.

Limpando versões antigas de pacotes Snap para liberar espaço em disco

Os arquivos do sistema relacionados ao snap são armazenados no diretório /var/lib/snapd. Com base no número de pacotes Snap instalados, esse tamanho do diretório pode estar em vários GBs.

Faça você mesmo, usando o comando du para verificar o tamamho do diretório.

Comando du mostrando o tamanho da pasta /var/lib/snapd

Você também pode usar a ferramenta Analisador de uso de disco para ver o uso de disco no Ubuntu.

Analisador de uso de disco mostrando tamanho da pasta /usr/lib/snapd

Isso é muito, certo? Você poderia liberar algum espaço em disco aqui.

Por design, o Snap mantém pelo menos uma versão mais antiga dos pacotes instalados em seu sistema.

Você pode ver esse comportamento usando o comando Snap:

Comandos para usar no terminal

snap list --all

Você deve ver o mesmo pacote listado duas vezes com versão diferente e número de revisão.

Snap mostrando versoes mantidas na máquina

Para liberar o espaço em disco, você pode excluir as versões adicionais do pacote. Como você sabe qual deles excluir? Você pode ver que esses pacotes mais antigos são rotulados como "desativados".

Não se preocupe. Você não tem que fazer isso manualmente. Há uma maneira automática de fazê-lo graças a um script em bash bacana escrito por Alan Pope enquanto ele estava trabalhando na equipe do Snapcraft.

Espero que você saiba como criar e executar um shell script de bash. Basicamente, crie um novo arquivo chamado clean-swap.sh e adicione as seguintes linhas a ele.

#!/bin/bash
# Remove revisões antigas de snaps
# FECHE TODOS OS SNAPS ANTES DE RODAR ESSE SCRIPT
set -eu
snap list --all | awk '/desactivada/{print $1, $3}' |
    while read snapname revision; do
        snap remove "$snapname" --revision="$revision"
    done

Nota: verifique qual é o idioma da saída de texto. No script usado nesse tutorial, é esperado que o sistema esteja mostrando a saída de texto em Português. Se estiver dando a saída de texto em Inglês, por exemplo, altere a palavra desactivada para disabled.

Salve e feche o editor.

Para executar este script, mantenha-o em seu diretório inicial e, em seguida, abra o terminal no Ubuntu e execute este comando:

Comandos para usar no terminal

sudo bash clean-snap.sh

Você pode ver que ele começa a remover a versão mais antiga dos pacotes.

Removendo versões antigas do Snap

Se você verificar o espaço de disco usado pelo Snap agora, verá que o tamanho do diretório está reduzido.

Tamanho reduzido da pasta /var/lib/snapd

Se isso funcionar para você, você pode executar este comando ocasionalmente.

Como funciona esse script?

Se você está curioso sobre o que este script faz, vamos explicar.

Você já viu a saída do comando snap list --all. Sua saída é passada para o comando awk. Awk é uma poderosa ferramenta de script.

A parte do awk '/desactivada/{print $1, $3}' procura a sequência 'desativada' em cada linha e, se for encontrada, ela extrai a primeira coluna e a terceira coluna. Se o seu snap list --all mostra informações em inglês, altere o comando do awk para disabled no lugar de desactivada.

Esta saída é passada para uma combinação de comandos while e read. O comando read obtém o valor da primeira coluna e da terceira coluna para a variável de revisão.

Essas variáveis são então usadas para executar o comando snap remove para excluir com o nome do pacote e seu número de revisão.

O loop while é executado enquanto houver linhas encontradas com string 'desactivada' nele.

Isso tudo faz sentido facilmente se você sabe um pouco sobre scripts shell.

Você recuperou seus GBs?

Você pode ver alguns fóruns aconselhando a configurar o valor de retenção do pacote Snap para 2.

Comandos para usar no terminal

sudo snap set system refresh.retain=2

Talvez não seja mais necessário. O comportamento padrão do Snap agora é armazenar o total de 2 versões para qualquer pacote.

No total, se você está ficando sem espaço, se livrar da versão adicional do pacote pode certamente ser uma das maneiras de liberar espaço em disco no Ubuntu.

Se este tutorial te ajudou a liberar algum espaço, deixe-nos saber na seção de comentários

Última atualização deste artigo: 16 de february de 2022