Perché tutti gli snap vengono montati ed elencati come dispositivi a blocchi o partizioni per Ubuntu 18.04?


19

A partire da Ubuntu 18.04 in esecuzione lsblkmostra 16 loop di snap (2-3 volte per ogni snap). La domanda è: perché vengono elencati come risultati per lsblk, fdisf-l e blkid?

Crea un sacco di disordine dagli attuali dischi che ho bisogno di vedere le partizioni, vale a dire / dev / partitions. So che esiste un presunto duplicato di questa domanda, ma chiede solo perché vengono elencati tre loop per scatto. Voglio sapere perché questi snap vengono elencati in primo luogo e il presunto duplicato non risponde a questo (forse quelli che lo contrassegnano come duplicato potrebbero aiutarmi spiegando perché è un duplicato). Tecnicamente, si qualificano come file system (che non ho né creato né richiesto), ma si stanno frapponendo all'output di informazioni per le / dev / partizioni che mi interessano. Questo diventa un problema quando fdisk -l genera un tre pagina + elenco riempito principalmente con scatti.

L'output di una recente installazione di Ubuntu (1 settimana fa) e non ho installato alcun snap:

$ 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  

(cattura dello schermo supplementare del testo sopra):
screenshot.jpg

I miei snap listspettacoli 6 risultati:

core
gnome-3-26-1604
calcolatore
-
gnome caratteri -
gnome registro -gnome monitor-sistema-gnome

Nel frattempo, gnome-disk-utility non mostra nulla per gli snap, mostrando solo il mio HDD e l'unità ottica.

Non sarà molto efficiente se ogni snap installato viene elencato come dispositivo a blocchi (2-3 volte ciascuno da aggiungere). Dovrei aspettarmi che futuri aggiornamenti si occupino di questo?

Modifica:
fdisk-lscarica anche un elenco molto lungo con 16 istanze di questi "loop del disco" (Disk / dev / loop0, Disk / dev / loop1, ecc., Ognuno con dettagli che non mostrerò qui perché è troppo lungo). Questo comportamento non può essere inteso, vero?
blkidelenca anche 16 loop, come TYPE = "squashfs". Almeno parted -lfunziona come previsto, eliminando solo le mie effettive partizioni del disco.

Ho appena provato questo e l'installazione di più snap aggiunge altro all'output lsblk. Pertanto, fdisk, lsblk, blkid potrebbero avere elenchi di output potenzialmente enormi, in base al numero di snap disponibili e installati.


Penso che la vera risposta alla tua domanda sia a questa domanda correlata: "I pacchetti di snap sono file system squashfs. L'unico modo per accedere agli snap è montarli. Quindi sì, saranno sempre montati". askubuntu.com/questions/842093/… Dio, vorrei che non dovessero essere montati!
Iraq

Risposte:


10

Quando si digita il comando

snap list 

otterrai l'output degli attuali pacchetti di snap installati. Il motivo è quando viene aggiornato un pacchetto snap, viene mantenuta la versione precedente (consultare il documento Snapcraft) .

Cita dal documento di Snapcraft

La garbage collection quindi rimuove ed elimina tutti i file di snap e le relative aree scrivibili per le versioni di snap precedenti a quella appena aggiornata, il che significa che, al massimo, saranno presenti sul sistema due versioni di uno snap. Ciò consente di risparmiare spazio su disco senza compromettere la possibilità di riportare lo snap a uno stato noto precedente.

La rimozione esplicita di uno snap dal sistema rimuoverà anche il codice ed eliminerà i dati per tutte le versioni precedenti.

Ad esempio hai installato più di una versione di gnome-calcolatrice .

Nel caso in cui sia necessaria solo la versione più recente, è possibile utilizzare

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

Usando il comando

losetup -a 

mostra gli snap montati (dispositivi loop)

Se si desidera eliminare quelli doppi, digitare

sudo losetup -d /dev/loop<loopnumber>

Sembra essere un errore del codice snap, poiché tutti i vecchi sono stati mantenuti nel file / var / lib / snapd / snaps.


1
sudo: remove: command not found e losetup -dnon cambia nulla.
jordy,

3
Il codice corretto sudo snap removenon lo è sudo remove. Per favore, rivedi la tua risposta.
jordy,

8

Dal contenuto della domanda, il problema riguarda la ricerca di un modo per avere il controllo su ciò che si vede quando si tenta di visualizzare i dispositivi a blocchi piuttosto che il modo in cui snap utilizza i dispositivi a blocchi per il suo funzionamento.

Sono d'accordo con la tua distinzione referenziata tra fdisk -le parted -l. Mentre fdisk mostra un ottimo output dettagliato di dispositivi a blocchi, mostra troppe altre cose che distraggono da ciò che stai cercando di vedere.

Risoluzione

È possibile utilizzare il filtro per l' output formattato con lsblk . Funziona bene per fornire un output pulito come quello che ottieni con gnome-disk-utility .

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

O come hai indicato nella tua domanda:

$ sudo parted -l

Per il dfcomando nella tua domanda, usa:

$ df | egrep -v /dev/loop

3
Aspettavo da tempo che qualcuno suggerisse esattamente questo, un output filtrato per lsblk (piuttosto che tutti quei commenti che difendono l'output eccessivo come normale e buono). Vorrei evitare di doverlo fare, tuttavia, solo perché semplice e lsblkveloce è stato veloce, facile da ricordare e ha funzionato magnificamente, prima che lo scatto interferisse con esso. Lo rivoglio com'era. Speriamo che l'output eccessivo sia solo un bug che verrà risolto.
jordy,

4
@danthonyd Grazie per il riconoscimento. Ero sicuro di aver compreso la domanda e di essere certo che meritasse un posto nel database AU di informazioni da considerare e rispondere. Questo è qualcosa di cui mi sono preoccupato da molto tempo. Tuttavia, il problema non è Snap. Il problema è con gli fdisksviluppatori. Dovrebbero aggiungere un metodo per filtrare i dispositivi reali sugli pseudo-dispositivi per rimuovere l'output eccessivo e rendere la loro applicazione più gestibile, come l'utilità Gnome-disk. Nessuno userebbe fdiskper gestire i propri dispositivi loop . (continua) ...
LD James,

4
... (continua) Non hanno nemmeno bisogno di vederlo nell'output di fdisk . Ecco a cosa servono losetup e altri comandi pseudo- applicativi. Quindi perché preoccuparsi di mostrarlo, se non riesci a gestirlo con lo strumento. Questo difetto nel design di fdisk sta rendendo le app come parted e lsblk più popolari e facili da usare.
LD James,

1
Grazie. Sto aggiungendo | egrep -v "^loop"a tutti i miei lsblkscript 16.04 oggi per ridurre la manutenzione il giorno in cui converto in 18.04. (Cordiali saluti, avevo già votato in precedenza la tua risposta prima di oggi)
WinEunuuchs2Unix

5

Lo trovo anche noioso. Sembra che se non sono in esecuzione non dovrebbero essere montati o elencati. È possibile eseguire questo comando per escludere tutti i dispositivi loop.

$ lsblk -e 7


1

Se si utilizza la versione snap del monitor di sistema, verranno visualizzati tutti i file system utilizzati da snap e quelli utilizzati.

Una semplice "correzione" è disinstallare Gnome System Monitor da app store. È la versione a scatto.

Quindi installare Gnome System Monitor dai normali repository usando il gestore pacchetti Synaptic. È la versione normale che installa un sacco di file su tutta la partizione di root. Bello!

E vedrai esattamente quello che ti aspetti di vedere all'avvio di Gnome System Monitor ...


Grande! Questo è quello che stavo cercando. I comandi sono snap remove gnome-system-monitor(nessun sudo richiesto), seguito da sudo apt install gnome-system-monitor(questa volta con sudo).
PerlDuck,

0

Per mostrare solo i montaggi escluso il loopback puoi anche semplicemente:

lsblk -af |grep -sv loop

;)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.