Por que todos os snaps estão sendo montados e listados como dispositivos de bloco ou partições para o Ubuntu 18.04?

18

A partir do Ubuntu 18.04, a execução lsblkmostra 16 snap loops (2-3 vezes para cada snap). A questão é: por que eles estão sendo listados como resultados para lsblk, fdisf-l e blkid?

Isso cria muita confusão a partir das partições reais dos discos que eu preciso ver, a saber / dev / partitions. Eu sei que existe uma duplicata pretendida dessa pergunta, mas ela pergunta apenas por que três loops estão sendo listados por snap. Quero saber por que esses snaps estão sendo listados em primeiro lugar, e a suposta duplicata não responde a isso (talvez aqueles que marcam isso como duplicado possam me ajudar a explicar por que é uma duplicata). Tecnicamente, eles se qualificam como sistemas de arquivos (que eu não criei nem pedi), mas estão atrapalhando a saída de informações para as partições / dev / nas quais estou interessado. Isso se torna um problema quando o fdisk -l gera três página + lista preenchida principalmente com snaps.

A saída de uma instalação recente do Ubuntu (com uma semana) e eu não instalei nenhum snaps:

$ lsblk  
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT  
loop0    7:0    0  14.5M  1 loop /snap/gnome-logs/37  
loop1    7:1    0   2.3M  1 loop /snap/gnome-calculator/170  
loop2    7:2    0  86.6M  1 loop /snap/core/4486  
loop3    7:3    0  86.6M  1 loop /snap/core/4650  
loop4    7:4    0   1.6M  1 loop /snap/gnome-calculator/154  
loop5    7:5    0  14.5M  1 loop /snap/gnome-logs/34  
loop6    7:6    0   3.3M  1 loop /snap/gnome-system-monitor/36  
loop7    7:7    0   2.3M  1 loop /snap/gnome-calculator/178  
loop8    7:8    0    13M  1 loop /snap/gnome-characters/101  
loop9    7:9    0   3.7M  1 loop /snap/gnome-system-monitor/45  
loop10   7:10   0 139.5M  1 loop /snap/gnome-3-26-1604/64  
loop11   7:11   0   140M  1 loop /snap/gnome-3-26-1604/59   
loop12   7:12   0   3.7M  1 loop /snap/gnome-system-monitor/41  
loop13   7:13   0    21M  1 loop /snap/gnome-logs/25  
loop14   7:14   0  12.2M  1 loop /snap/gnome-characters/69  
loop15   7:15   0    13M  1 loop /snap/gnome-characters/96  
sda      8:0    0 298.1G  0 disk  
├─sda1   8:1    0   512M  0 part /boot/efi  
└─sda2   8:2    0 297.6G  0 part /  
sr0     11:0    1  1024M  0 rom  

(captura de tela suplementar do texto acima):
screenshot.jpg

Meus snap listprogramas 6 resultados:

core
gnome-3-26-1604
calculadora
gnomo gnomo-caracteres
gnome-logs
gnome-system-monitor

Enquanto isso, o gnome-disk-utility não mostra nada para snaps, apenas mostrando meu disco rígido e unidade óptica.

Não será muito eficiente se cada snap instalado for listado como um dispositivo de bloco (2-3 vezes cada para adicionar). Devo esperar atualizações futuras para lidar com isso?

Edit:
fdisk-ltambém despeja uma lista muito longa com 16 instâncias desses "loops de disco" (Disco / dev / loop0, Disco / dev / loop1, etc., cada um com detalhes que não mostrarei aqui porque é muito longo). Este não pode ser um comportamento pretendido, pode?
blkidtambém lista 16 loops, como TYPE = "squashfs". Pelo menos parted -lfunciona como esperado, apenas distribuindo minhas partições de disco reais.

Acabei de testar isso, e instalar mais snaps adiciona mais à saída do lsblk. Portanto, fdisk, lsblk, blkid pode ter listas de saída potencialmente enormes, de acordo com o número de snaps disponíveis e instalados.

jordy
fonte
Acho que a resposta real à sua pergunta está relacionada a esta pergunta: "Pacotes de snap são sistemas de arquivos squashfs. A única maneira de acessar snaps é montá-los. Portanto, sim, eles sempre serão montados". askubuntu.com/questions/842093/… Deus, eu gostaria que eles não tivessem que ser montados!
craq

Respostas:

10

Quando você digita o comando

snap list 

você obterá a saída dos pacotes de snap instalados reais. O motivo é que, quando um pacote de snap é atualizado, a versão antiga é mantida (consulte o documento do snapcraft) .

Citações de snapcraft docu

A coleta de lixo remove e limpa todos os arquivos de snap, e suas áreas graváveis, para versões de snap anteriores àquelas que foram atualizadas - o que significa que, no máximo, duas versões de um snap estarão presentes no sistema. Isso economiza espaço em disco sem comprometer a capacidade de reverter o snap para um estado anterior de bom estado.

A remoção explícita de um snap do seu sistema também removerá o código e limpará os dados de todas as versões anteriores.

Por exemplo, você instalou mais de uma versão do gnome-calculator .

Caso você precise apenas da versão mais recente, poderá usar

sudo snap remove gnome-calculator --revision <verison to be placed>

Usando o comando

losetup -a 

mostra os snaps montados (dispositivos de loop)

Se você deseja excluir os duplos, digite

sudo losetup -d /dev/loop<loopnumber>

Parece ser um erro do código de snap, pois todos os mais antigos foram mantidos no arquivo / var / lib / snapd / snaps.

abu_bua
fonte
11
sudo: remove: command not found e losetup -dnada muda.
Jordy #
3
O código correto sudo snap removenão é sudo remove. Revise sua resposta.
Jordy #
8

A partir do conteúdo da sua pergunta, seu problema é procurar uma maneira de ter controle sobre o que você está vendo quando tenta exibir seus dispositivos de bloco do que como o snap usa dispositivos de bloco para sua operação.

Concordo com a sua distinção referenciada entre fdisk -le parted -l. Enquanto o fdisk mostra uma saída detalhada muito boa de dispositivos de bloco, mostra muitas outras coisas que desviam o que você está tentando ver.

Resolução

Você pode usar o filtro da saída formatada lsblk . Isso funciona bem para fornecer uma saída limpa, como a que você obtém com o gnome-disk-utility .

$ lsblk -o name,mountpoint,label,size,fstype,uuid | egrep -v "^loop"

Ou como você indicou na sua pergunta:

$ sudo parted -l

Para o dfcomando em sua pergunta, use:

$ df | egrep -v /dev/loop
LD James
fonte
3
Eu estava esperando muito tempo para alguém sugerir exatamente isso, uma saída filtrada para lsblk (em vez de todos os comentários que defendiam a saída excessiva como normal e boa). Eu gostaria de evitar ter que fazer isso, no entanto, apenas porque simples e direto lsblkera rápido, fácil de lembrar e funcionava lindamente, antes do snap interferir com ele. Quero de volta como estava. Felizmente, a saída excessiva é apenas um bug que será corrigido.
Jordy
4
@danthonyd Obrigado pelo reconhecimento. Eu tinha certeza de que entendi a pergunta e tinha certeza de que merecia um lugar no banco de dados de informações da UA para consideração e resposta. Isso me preocupa há muito tempo. No entanto, o problema não é o Snap. O problema está com os fdiskdesenvolvedores. Eles devem adicionar um método para filtrar dispositivos reais pelos pseudo-dispositivos para remover a saída excessiva e tornar seu aplicativo mais gerenciável, como o utilitário Gnome-disk. Ninguém usaria fdiskpara gerenciar seus dispositivos de loop . (continuação) ...
LD James
4
... (continuação) Eles nem precisam vê-lo na saída do fdisk . É para isso que servem losetup e outros comandos de pseudo aplicativos. Então, por que se incomodar em mostrá-lo, se você não pode gerenciá-lo com a ferramenta? Essa falha no design do fdisk está tornando aplicativos como parted e lsblk mais populares e fáceis de usar.
LD James
11
Obrigado. Hoje estou adicionando | egrep -v "^loop"todos os meus lsblkscripts 16.04 para reduzir a manutenção no dia em que converti para 18.04. (FYI, eu já havia votado sua resposta antes de hoje) #
WinEunuuchs2Unix 21/1018
4

Eu também acho isso irritante. Parece que, se não estiverem em execução, não deverão ser montados ou listados. Você pode executar este comando para excluir todos os dispositivos de loop.

$ lsblk -e 7

user911218
fonte
1

Se você usar a versão snap do monitor do sistema, verá todos os sistemas de arquivos usados ​​pelo snap, assim como os que você usa.

Uma "correção" fácil é desinstalar o Gnome System Monitor da loja de aplicativos. É a versão instantânea.

Em seguida, instale o Gnome System Monitor a partir dos repositórios normais usando o gerenciador de pacotes Synaptic. É a versão normal que instala um monte de arquivos em toda a partição raiz. Agradável!

E você verá exatamente o que espera ver ao iniciar o Gnome System Monitor ...

Anders Larsen
fonte
Ótimo! Era isso que eu estava procurando. Os comandos são snap remove gnome-system-monitor(sem necessidade de sudo), seguidos por sudo apt install gnome-system-monitor(desta vez com sudo).
PerlDuck #
0

Para mostrar apenas montagens excluindo loopback, você também pode simplesmente:

lsblk -af |grep -sv loop

;)

jbrios777
fonte