Como remover versões antigas do snap para liberar espaço em disco

21 de outubro de 2019

Logotipo Snapcraft

Eu estava usando o Disk Usage Analyzer recentemente para ver se eu conseguia liberar algum espaço na minha área de trabalho Ubuntu 18.10, quando percebi que a pasta /var/lib/snapd/snaps/ era bem grande.

Ao investigar como eu poderia liberar espaço/limpar o cache de snap da pasta /var/lib/snapd/snaps/ sem remover os pacotes de snap que instalei, descobri que, por padrão, três versões de snap são armazenadas pelo sistema após as atualizações do pacote de snap. O que significa que para cada pacote de snap instalado que tinha pelo menos 2 atualizações, eu tinha 3 revisões armazenadas no meu sistema, ocupando um pouco de espaço em disco.

Existe uma opção no snap (começando com a versão 2.34 do snapd), chamada refresh.retain, para definir o número máximo de revisões de um snap armazenadas pelo sistema após a próxima atualização, que pode ser definido para um número entre 2 e 20. Você pode alterar isso do valor padrão de 3 para 2 usando:

Comandos para usar no terminal

sudo snap set system refresh.retain=2

Mas e se você quiser remover todas as versões mantidas no sistema para todos os pacotes snap que tiveram atualizações? Este é um script criado por Popey, Gerente de Comunidade da Engenharia do Ubuntu na Canonical, para remover TODOS as antigos versões de snaps, mantendo apenas a versão ativa atual (atualizada com LANG=en_US.UTF-8 para que funcione com localidades diferentes do inglês, graças a William nos comentários):

#!/bin/bash
# Removes old revisions of snaps
# CLOSE ALL SNAPS BEFORE RUNNING THIS
set -eu

LANG=en_US.UTF-8 snap list --all | awk '/disabled/ {print $1, $3}' |
    while read snapname revision; do
        snap remove "$snapname" --revision="$revision"
    done

O uso desse script deve liberar algum espaço em disco significativo (dependendo do número de pacotes snap instalados em seu sistema e se eles tiveram atualizações desde que foram instalados). No meu caso, o script reduziu o tamanho da pasta /var/lib/snapd/snaps/ em mais de 50%.

Atualização: Parece que este script só funciona em inglês. Para outros idiomas, você precisará substituir /disabled/ no comando pela tradução para o seu idioma.

Para usar este script, crie um arquivo chamado remove-old-snaps, cole o conteúdo do bloco de código acima, salve o arquivo em seu diretório inicial e torne-o executável usando:

Comandos para usar no terminal

chmod +x remove-old-snaps

Execute o script com sudo para remover as revisões de snap antigas (certifique-se de fechar todos os snaps em execução antes de executar o script):

Comandos para usar no terminal

sudo ./remove-old-snaps

Este é o script em execução no meu sistema, removendo revisões antigas do pacote snap:

$ sudo ./remove-old-snaps

atom (revision 223) removed
atom (revision 222) removed
bitwarden (revision 15) removed
bitwarden (revision 16) removed
canonical-livepatch (revision 50) removed
canonical-livepatch (revision 54) removed
chromium (revision 607) removed
chromium (revision 660) removed
core (revision 6531) removed
core (revision 6405) removed
core18 (revision 719) removed
core18 (revision 731) removed
gallery-dl (revision 36) removed
gallery-dl (revision 167) removed
gimp (revision 110) removed
gimp (revision 113) removed

Esse post foi traduzido do site LinuxUprising.com pela rtland.team.

Linux Uprising Blog

Confira a versão original desse post em inglês:

How To Remove Old Snap Versions To Free Up Disk Space
Propaganda
Propaganda