Ao examinar os pacotes snap que estão instalados em um sistema, notei que alguns pacotes têm uma duplicata, um com um número de revisão superior e o outro com um número de revisão mais recente. Para esses pacotes duplicados, minhas perguntas são:
- Por que eles são duplicados?
- Posso remover o pacote mais antigo para garantir um melhor gerenciamento de espaço em disco?
- Como removo o pacote mais antigo?
Abaixo estão exemplos de pacotes que possuem e não possuem duplicatas:
$ du -hcs /var/lib/snapd/snaps/*
31M /var/lib/snapd/snaps/2048x_3.snap
286M /var/lib/snapd/snaps/atom_282.snap
4.0K /var/lib/snapd/snaps/bare_5.snap
72M /var/lib/snapd/snaps/bitwarden_58.snap
72M /var/lib/snapd/snaps/bitwarden_59.snap
196M /var/lib/snapd/snaps/blender_1113.snap
214M /var/lib/snapd/snaps/blender_1237.snap
9.1M /var/lib/snapd/snaps/canonical-livepatch_119.snap
9.1M /var/lib/snapd/snaps/canonical-livepatch_126.snap
148M /var/lib/snapd/snaps/chromium_1854.snap
148M /var/lib/snapd/snaps/chromium_1864.snap
17M /var/lib/snapd/snaps/chromium-ffmpeg_23.snap
18M /var/lib/snapd/snaps/chromium-ffmpeg_24.snap
....
~$ ls -lh /var/lib/snapd/snaps/
total 12G
-rw------- 2 root root 31M Aug 5 06:23 2048x_3.snap
-rw------- 2 root root 286M Aug 5 08:35 atom_282.snap
-rw------- 2 root root 4.0K Sep 22 18:17 bare_5.snap
-rw------- 1 root root 72M Oct 30 00:20 bitwarden_58.snap
-rw------- 1 root root 72M Dec 9 04:28 bitwarden_59.snap
-rw------- 1 root root 196M Nov 18 04:06 blender_1113.snap
-rw------- 1 root root 214M Dec 4 09:39 blender_1237.snap
-rw------- 2 root root 9.1M Nov 17 21:06 canonical-livepatch_119.snap
-rw------- 2 root root 9.1M Nov 22 22:39 canonical-livepatch_126.snap
-rw------- 1 root root 148M Dec 16 04:28 chromium_1854.snap
-rw------- 1 root root 148M Jan 8 08:33 chromium_1864.snap
-rw------- 1 root root 17M Sep 3 06:29 chromium-ffmpeg_23.snap
-rw------- 2 root root 18M Nov 29 14:23 chromium-ffmpeg_24.snap
....
No sistema que estou analisando, o espaço total em disco utilizado /var/lib/snapd/snaps/*
é de 12.180,248 MB. O espaço em disco de todos os pacotes duplicados (ou seja, revisões mais antigas do mesmo pacote) é de 4.163,1 MB. Resumindo, os pacotes de revisão mais antigos atualmente ocupam 34,18% dos 12.180,248 MB. Isso parece ser um custo para usar aplicativos SNAP que eu não havia percebido antes.
Para responder às suas perguntas:
Por que eles são duplicados?
⇢ São diferentes revisões (versões), não duplicações.
Posso remover o pacote mais antigo para garantir um melhor gerenciamento de espaço em disco?
⇢ Sim. É o seu computador, afinal.
Como removo o pacote mais antigo?
Você pode fazer isso no Terminal assim:
Você também pode dizer ao sistema quantas versões anteriores ele deve limitar-se assim:
Observação: o valor deve estar entre
2
e20
e um número como2
ou3
geralmente é recomendado para economizar espaço de armazenamento e permitir uma reversão no caso de uma atualização incorreta.Se você quiser listar todos os snaps e suas versões , você pode executar este comando:
O que lhe dará algo como:
Precisa de um roteiro?
IMPORTANTE: Você vai querer verificar a saída de
snap list --all
no seu computador antes de continuar, e o seguinte é um script que não deve ser copiado/colado sem verificação de sanidade se você estiver usando uma localidade que não sejaen_US.UTF-8
.O roteiro:
Isso executará
snap list -all
e extrairá as linhas que contêm a palavradisabled
. Isso será diferente dependendo da sua localidade, portanto, verifique primeiro a saída da função e, em seguida, atualizeawk '/disabled/
para substituirdisabled
pelo rótulo encontrado em sua saída.Salve o script em um arquivo (por exemplo
scrub-snaps.sh
) e defina-o como executável:Agora você pode executá-lo, lembrando de usar
sudo
:Obs:
sudo
não fazia parte do script, mas pode ser adicionado caso prefira tê-lo lá. De qualquer forma, você será solicitado a fornecer uma senha, se necessário.Manter pelo menos uma versão mais antiga de um snap é inerente ao design.
Os pacotes Snap foram originalmente projetados para uma variedade de ambientes onde geralmente não há administrador humano e/ou nenhuma maneira de conectar um teclado e um monitor... como telefones ou dispositivos IOT. A resiliência é um requisito crítico para esses sistemas: se um aplicativo travar ou uma atualização for corrompida, será necessária alguma forma de reversão garantida sem intervenção humana. Daí a exigência de pelo menos uma versão mais antiga disponível.
As pessoas em desktops e servidores clássicos não se importam muito com esse recurso de reversão. Eles gostam de diferentes elementos de design de snap: as atualizações automáticas seguras que são independentes do sistema operacional, a prevenção de adulteração squashfs somente leitura, o confinamento do processo etc.
Mas é tudo um único padrão, então você também obtém o recurso de reversão. Mesmo que você ache que não vai usar.
Você não pode "desativar" a capacidade de reversão de snaps - não é realmente um "recurso", mas um elemento-chave de design.
Com base na resposta @matigo, escrevi um script python para automatizar a remoção de pacotes SNAP desabilitados. Ele permite que um usuário verifique visualmente os pacotes de snap antes de prosseguir (ou não) com o processo de remoção. Um exemplo do que o script executado faz é mostrado no link.
remove_disabled_snap_pkgs.py