Warum werden alle Snaps für Ubuntu 18.04 als Block-Geräte oder Partitionen gemountet und aufgelistet?

18

Ab Ubuntu 18.04 lsblkwerden 16 Snap-Loops angezeigt (2-3 mal für jeden Snap). Die Frage ist, warum sie als Ergebnisse für lsblk, fdisf-l und blkid aufgelistet werden.

Es schafft eine Menge Durcheinander von den Partitionen des Festplattenlaufwerks, die ich sehen muss, nämlich / dev / partitions. Ich weiß, dass es ein vermeintliches Duplikat dieser Frage gibt, aber es fragt nur, warum drei Schleifen pro Fang aufgelistet werden. Ich möchte wissen, warum diese Schnappschüsse an erster Stelle aufgeführt werden und das angebliche Duplikat dies nicht beantwortet (möglicherweise helfen mir diejenigen, die dies als Duplikat markieren, indem sie erklären, warum es ein Duplikat ist). Technisch gesehen qualifizieren sie sich als Dateisysteme (die ich weder erstellt noch angefordert habe), aber sie behindern die Informationsausgabe für die / dev / -Partitionen, an denen ich interessiert bin. Dies wird zu einem Problem, wenn fdisk -l eine Drei ausgibt Seite + Liste hauptsächlich mit Schnappschüssen gefüllt.

Die Ausgabe einer neuen (1 Woche alten) Ubuntu-Installation und ich habe keine Snaps installiert:

$ 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  

( Zusätzliche Bildschirmaufnahme des obigen Textes):
screenshot.jpg

Meine snap listShows 6 Ergebnisse:

Kern
gnome-1604.03.26
gnome-Rechner
gnome-Zeichen
gnome-logs
gnome-system-monitor

Währenddessen zeigt das Gnome-Disk-Utility für Snaps gar nichts an, sondern nur meine Festplatte und mein optisches Laufwerk.

Es wird nicht sehr effizient sein, wenn jeder installierte Snap als Block-Gerät aufgeführt wird (jeweils 2-3 Mal zum Hinzufügen). Sollte ich damit rechnen, dass zukünftige Updates dies bewältigen?

Bearbeiten:
fdisk-lErstellt auch eine sehr lange Liste mit 16 Instanzen dieser "Disk-Loops" (Disk / dev / loop0, Disk / dev / loop1 usw., jeweils mit Details, die hier nicht angezeigt werden, weil sie zu lang sind). Das kann doch kein beabsichtigtes Verhalten sein, oder?
blkidlistet auch 16 Schleifen auf, als TYPE = "squashfs". Zumindest parted -lfunktioniert es wie erwartet und es werden nur meine tatsächlichen Festplattenpartitionen gelöscht.

Ich habe das gerade getestet und die Installation weiterer Snaps erhöht die lsblk-Ausgabe. Aus diesem Grund kann fdisk, lsblk, blkid je nach Anzahl der verfügbaren und installierten Snaps möglicherweise sehr große Ausgabelisten haben.

jordy
quelle
Ich denke, die eigentliche Antwort auf Ihre Frage lautet: "Snap-Pakete sind Squashfs-Dateisysteme. Der einzige Weg, auf Snaps zuzugreifen, besteht darin, sie zu mounten. Ja, sie werden immer gemountet." askubuntu.com/questions/842093/… Gott, ich wünschte, sie müssten nicht montiert werden!
Craq

Antworten:

10

Wenn Sie den Befehl eingeben

snap list 

Sie erhalten die Ausgabe der aktuell installierten Snap-Pakete. Der Grund ist, dass beim Aktualisieren eines Snap-Pakets die alte Version beibehalten wird (siehe Snapcraft-Dokumentation) .

Zitieren Sie aus Snapcraft Docu

Die Garbage Collection entfernt und bereinigt dann alle Snap-Dateien und ihre beschreibbaren Bereiche für Snap-Versionen vor der gerade aktualisierten Version. Dies bedeutet, dass höchstens zwei Versionen eines Snaps auf dem System vorhanden sind. Dies spart Speicherplatz, ohne die Fähigkeit zu beeinträchtigen, den Snap auf einen früheren Zustand mit bekannter Funktionsfähigkeit zurückzusetzen.

Durch das explizite Entfernen eines Snaps aus Ihrem System wird auch der Code entfernt und die Daten aller früheren Versionen gelöscht.

Zum Beispiel haben Sie mehr als eine Version von gnome-calculator installiert .

Falls Sie nur die neueste Version benötigen, können Sie verwenden

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

Befehl verwenden

losetup -a 

zeigt Ihnen die montierten Snaps (Loop-Geräte)

Wenn Sie die doppelten löschen möchten, geben Sie ein

sudo losetup -d /dev/loop<loopnumber>

Es scheint ein Fehler des Snap-Codes zu sein, da alle älteren in der Datei / var / lib / snapd / snaps gespeichert wurden.

abu_bua
quelle
1
sudo: remove: command not found und losetup -dändert nichts.
Jordan
3
Der richtige Code ist sudo snap removenicht sudo remove. Bitte überarbeiten Sie Ihre Antwort.
Jordan
8

In Bezug auf den Inhalt Ihrer Frage geht es bei Ihrem Problem darum, nach einer Möglichkeit zu suchen, die Kontrolle darüber zu haben, was Sie sehen, wenn Sie versuchen, Ihre Blockgeräte anzuzeigen, und nicht darum, wie snap Blockgeräte für den Betrieb verwendet.

Ich stimme Ihrer Unterscheidung zwischen fdisk -lund zu parted -l. Während fdisk eine sehr gute Detailausgabe von Blockgeräten zeigt, zeigt es zu viele andere Dinge, die von dem ablenken, was Sie sehen möchten.

Auflösung

Sie können die lsblk- formatierte Ausgabe filtern . Dies funktioniert gut, um eine saubere Ausgabe zu erzielen, wie Sie sie mit dem Dienstprogramm gnome-disk-utility erhalten .

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

Oder wie Sie in Ihrer Frage angegeben:

$ sudo parted -l

dfVerwenden Sie für den Befehl in Ihrer Frage:

$ df | egrep -v /dev/loop
LD James
quelle
3
Ich habe lange darauf gewartet, dass jemand genau dies vorschlägt, eine gefilterte Ausgabe für lsblk (anstatt all dieser Kommentare, die die übermäßige Ausgabe als normal und gut verteidigen). Ich möchte jedoch vermeiden, dies tun zu müssen, nur weil schlicht und geradlinig lsblkschnell und einfach zu merken war und es wunderbar funktionierte, bevor Snap es störte. Ich will es wieder so wie es war. Hoffentlich ist die übermäßige Ausgabe nur ein Fehler, der behoben wird.
jordy
4
@danthonyd Danke für die Bestätigung. Ich war mir sicher, dass ich die Frage verstanden hatte und dass sie einen Platz in der AU-Datenbank mit Informationen zur Prüfung und Beantwortung verdient hatte. Das ist etwas, worüber ich mir schon lange Sorgen gemacht habe. Das Problem ist jedoch nicht Snap. Das Problem liegt bei den fdiskEntwicklern. Sie sollten eine Methode hinzufügen, um echte Geräte über die Pseudogeräte herauszufiltern, um die übermäßige Ausgabe zu entfernen und ihre Anwendung leichter zu verwalten, wie das Gnome-Festplatten-Dienstprogramm. Niemand würde fdiskihre Loop- Geräte verwalten. (Fortsetzung) ...
LD James
4
... (Fortsetzung) Sie müssen es nicht einmal in der fdisk- Ausgabe sehen. Das ist , was losetup und andere Pseudo- Anwendungsbefehle sind für. Warum sollte man es dann zeigen, wenn man es mit dem Tool nicht schafft? Dieser Fehler im fdisk-Design macht Apps wie parted und lsblk populärer und benutzerfreundlicher.
LD James
1
Vielen Dank. Ich | egrep -v "^loop"füge lsblkheute alle meine 16.04- Skripte hinzu, um die Wartung an dem Tag zu reduzieren, an dem ich auf 18.04 konvertiere. (Zu Ihrer
Information,
4

Das finde ich auch ärgerlich. Wenn sie nicht ausgeführt werden, sollten sie anscheinend nicht gemountet oder aufgelistet werden. Sie können diesen Befehl ausführen, um alle Loop-Geräte auszuschließen.

$ lsblk -e 7

user911218
quelle
1

Wenn Sie die Snap-Version des Systemmonitors verwenden, werden alle von Snap verwendeten Dateisysteme sowie die von Ihnen verwendeten Dateisysteme angezeigt.

Eine einfache "Lösung" besteht darin, Gnome System Monitor aus dem App Store zu deinstallieren. Es ist die Snap-Version.

Installieren Sie dann Gnome System Monitor von den normalen Repositorys mit Synaptic Package Manager. Es ist die normale Version, die eine Reihe von Dateien auf Ihrer gesamten Root-Partition installiert. Nett!

Und Sie werden genau das sehen, was Sie erwarten, wenn Sie Gnome System Monitor starten ...

Anders Larsen
quelle
Groß! Das ist, wonach ich gesucht habe. Die Befehle sind snap remove gnome-system-monitor(kein sudo erforderlich), gefolgt von sudo apt install gnome-system-monitor(diesmal mit sudo).
PerlDuck
0

Um nur Reittiere ohne Loopback anzuzeigen, können Sie auch einfach:

lsblk -af |grep -sv loop

;)

jbrios777
quelle