Como remover a versão antiga dos snaps instalados


65

Sou novato no uso de snap, tenho poucos aplicativos instalados no meu sistema, algo que noto ao executar o comando df -hque encontrei montando versões diferentes do mesmo snap

/dev/loop0       143M   143M     0 100% /var/lib/snapd/snap/gravit-designer/7
/dev/loop1        82M    82M     0 100% /var/lib/snapd/snap/core/4110
/dev/loop7       198M   198M     0 100% /var/lib/snapd/snap/polarr/3
/dev/loop2        82M    82M     0 100% /var/lib/snapd/snap/core/4206
/dev/loop3       143M   143M     0 100% /var/lib/snapd/snap/gravit-designer/6
/dev/loop10      137M   137M     0 100% /var/lib/snapd/snap/gravit-designer/5

minha pergunta é por que eles ficam lá, a única maneira que encontrei para remover o antigo é remover e instalar novamente o snap, existe algo como prunemanter meu sistema?


Respostas:


84

Aqui está um script curto que removerá todas as versões antigas dos snaps. Isso manterá apenas a versão ativa atual, que deve recuperar algum espaço em disco:

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

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

Ele removeu com êxito todas as versões antigas, mas nenhum espaço foi adicionado ao meu disco!
mtoloo

Verifique o diretório /var/lib/snapd/snaps/antes e depois de executar este script. Deveria liberar algum espaço - se realmente removeu alguns snaps. Deve mostrar mensagens como snap-name removed, por exemplo gtk-common-themes removed.
PeterM

Existem alguns hardlinks, /var/lib/snapd/cacheportanto você deve excluí-los também para liberar espaço. Você pode remover com segurança o cache comsudo rm /var/lib/snapd/cache/*
rubo77

42

A partir do snap 2.34 e posterior, é possível definir o número máximo de revisões de um snap armazenadas pelo sistema, configurando a opção refresh.retain .

$ sudo snap set system refresh.retain=2 

O valor refresh.retain pode ser apenas um número entre 2 e 20 e tem um valor padrão 3.


1
depois de fazer isso, passando do padrão 3 para o novo 2, quando as versões atuais são eliminadas?
Tim

Eu acho que os snaps antigos serão eliminados quando a nova versão for instalada. Como você já deve saber, tirar atualizações instaladas aplicativos automaticamente dependendo opção refresh.timer, para que você não tem que fazer a atualização manualmente
Mustapha Hadid

Mas como verificar quantas máquinas meu computador precisa? Exemplo: refresh.retain=3é bom para 4Gb RAM ou precisa de mais?
Peter Krauss

1
@ PeterKrauss Depende da capacidade do seu dispositivo de armazenamento. Não tem nada a ver com a sua capacidade de RAM.
Mustapha Hadid

30

Uma versão do script de outra resposta , como uma linha, sem a awkdependência:

# snap list --all | while read snapname ver rev trk pub notes; do if [[ $notes = *disabled* ]]; then snap remove "$snapname" --revision="$rev"; fi; done

Isso provavelmente requer bashou um shell compatível com a [[construção.


6
Isso deve ser executado a partir de um usuário que pode adicionar snaps. No Ubuntu Core, o usuário administrador trabalha, no Ubuntu normal, uma sudo -isessão pode ser necessária ou snap removepode ser executada sudo.
Gert van den Berg

@ rubo77 apontou que assume uma localidade em inglês. Executá-lo em um sub-shell (para não mexer com as variáveis ​​de ambiente local do shell principal) depois de fazer isso de export LC_ALL=en_US.UTF-8antemão deve garantir isso. (Também pode ser definido antes do comando snap, mas não tenho certeza se as remoções mais tarde também precisam ser traduzidas)
Gert van den Berg

Basta adicionar LANG=c antes que toda a linha funcione bem nos consoles alemães
rubo77

@ rubo77 Provavelmente deveria ser LANG=C(ou LC_ALL=C) o local padrão. Letras minúsculas cpodem funcionar devido ao Cpadrão de um código de idioma inválido. ( LC_MESSAGESé provavelmente a configuração mínima) (não quero editar a postagem para uma configuração que muitos usuários não precisam ...) (você compara os erros de LANG=c localecom LANG=C locale)
Gert van den Berg

17

Os documentos snapd nas versões afirmam que as revisões desatualizadas devem ser removidas automaticamente para que não sejam instaladas mais do que as duas últimas. No entanto, também vi mais de duas versões dos meus snaps instalados.

Você pode listar todas as revisões com snap list --allpara ver algo como:

Name     Version                  Rev   Tracking  Developer  Notes
core     16-2.31.2                4206  stable    canonical  core,disabled
core     16-2.32.3                4407  stable    canonical  core,disabled
core     16-2.32.5                4486  stable    canonical  core
spotify  1.0.70.399.g5ffabd56-26  5     stable    spotify    disabled
spotify  1.0.72.117.g6bd7cc73-35  6     stable    spotify    disabled
spotify  1.0.77.338.g758ebd78-41  13    stable    spotify    -

Você pode remover revisões individuais com snap remove spotify --revision=5.

Isso é seguro mesmo para as revisões desabilitadas coree outras dependências e, snap removecom um explícito --revision=..., impede a remoção de non- disabledsnaps.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.