Pourquoi tous les snaps sont-ils montés et répertoriés en tant que périphériques ou partitions de bloc pour Ubuntu 18.04?

19

Depuis Ubuntu 18.04, l'exécution lsblkmontre 16 boucles d'accrochage (2-3 fois pour chaque accrochage). La question est, pourquoi sont-ils répertoriés comme résultats pour lsblk, fdisf-l et blkid?

Cela crée beaucoup d'encombrement à partir des partitions de disque réelles que j'ai besoin de voir, à savoir / dev / partitions. Je sais qu'il existe un prétendu doublon de cette question, mais il demande seulement pourquoi trois boucles sont répertoriées par snap. Je veux savoir pourquoi ces snaps sont répertoriés en premier lieu, et le prétendu doublon ne répond pas à cela (peut-être que ceux qui le marquent comme doublon pourraient m'aider en expliquant pourquoi il s'agit d'un doublon). Techniquement, ils sont considérés comme des systèmes de fichiers (que je n'ai ni créés ni demandés), mais ils gênent la sortie d'informations pour les partitions / dev / qui m'intéressent. Cela devient un problème lorsque fdisk -l génère trois page + liste remplie principalement de snaps.

La sortie d'une installation récente (1 semaine) d'Ubuntu et je n'ai pas installé de 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  

(capture d'écran supplémentaire du texte ci-dessus):
screenshot.jpg

Mon snap listmontre 6 résultats:

core
gnome-3-26-1604
gnome-calculator
gnome-characters
gnome-logs
gnome-system-monitor

Pendant ce temps, l'utilitaire gnome-disk ne montre rien du tout pour les snaps, ne montrant que mon disque dur et mon lecteur optique.

Il ne sera pas très efficace si chaque composant logiciel enfichable installé est répertorié en tant que périphérique de bloc (2-3 fois chacun pour l'ajouter). Dois-je m'attendre à ce que les futures mises à jour traitent de cela?

Edit:
fdisk-laffiche également une très longue liste avec 16 instances de ces "boucles de disque" (Disk / dev / loop0, Disk / dev / loop1, etc., chacune avec des détails que je ne montrerai pas ici car c'est trop long). Cela ne peut pas être un comportement voulu, n'est-ce pas?
blkidrépertorie également 16 boucles, comme TYPE = "squashfs". Fonctionne au moins parted -lcomme prévu, ne sortant que mes partitions de disque réelles.

Je viens de tester cela, et l'installation de snaps ajoute plus à la sortie lsblk. Par conséquent, fdisk, lsblk, blkid pourraient avoir des listes de sortie potentiellement énormes, selon le nombre de snaps disponibles et installés.

jordy
la source
Je pense que la vraie réponse à votre question est à cette question connexe: "Les packages Snap sont des systèmes de fichiers squashfs. La seule façon d'accéder aux snaps est de les monter. Donc oui, ils seront toujours montés." askubuntu.com/questions/842093/… Dieu j'aimerais qu'ils n'aient pas besoin d'être montés!
craq

Réponses:

10

Lorsque vous tapez la commande

snap list 

vous obtiendrez la sortie des packages de snapshots installés. La raison en est que lorsqu'un package snap est mis à jour, l'ancienne version est conservée (voir docu snapcraft) .

Citate de snapcraft docu

Le garbage collection supprime et purge ensuite tous les fichiers snap, et leurs zones inscriptibles, pour les versions snap antérieures à celle qui vient d'être mise à jour - ce qui signifie que, au plus, deux versions d'un snap seront présentes sur le système. Cela permet d'économiser de l'espace disque sans compromettre la possibilité de rétablir l'accrochage à un état antérieur connu.

La suppression explicite d'un composant logiciel enfichable de votre système supprimera également le code et purgera les données de toutes les versions antérieures.

Par exemple, vous avez installé plus d'une version de gnome-calculator .

Si vous n'avez besoin que de la dernière version, vous pouvez utiliser

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

Utilisation de la commande

losetup -a 

vous montre les snaps montés (périphériques de boucle)

Si vous souhaitez supprimer les doubles, tapez

sudo losetup -d /dev/loop<loopnumber>

Il semble que ce soit une erreur du code snap, car tous les anciens ont été conservés dans le fichier / var / lib / snapd / snaps.

abu_bua
la source
1
sudo: remove: command not found et losetup -dne change rien.
jordy
3
Le bon code sudo snap removene l' est pas sudo remove. Veuillez réviser votre réponse.
jordy
8

D'après le contenu de votre question, votre problème concerne la recherche d'un moyen de contrôler ce que vous voyez lorsque vous essayez d'afficher vos périphériques de blocage plutôt que la façon dont Snap utilise les périphériques de blocage pour son fonctionnement.

Je suis d'accord avec votre distinction référencée entre fdisk -let parted -l. Bien que fdisk affiche une très bonne sortie détaillée des périphériques de bloc, il montre trop d'autres choses qui distraient de ce que vous essayez de voir.

Résolution

Vous pouvez utiliser filtrer la sortie au format lsblk . Cela fonctionne bien pour donner une sortie propre comme ce que vous obtenez avec gnome-disk-utility .

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

Ou comme vous l'avez indiqué dans votre question:

$ sudo parted -l

Pour la dfcommande dans votre question, utilisez:

$ df | egrep -v /dev/loop
LD James
la source
3
J'attendais depuis longtemps que quelqu'un suggère exactement cela, une sortie filtrée pour lsblk (plutôt que tous ces commentaires défendant la sortie excessive comme normale et bonne). Je voudrais éviter d'avoir à le faire, cependant, juste parce que simple et direct lsblkétait rapide, facile à retenir et que cela fonctionnait magnifiquement, avant que le claquement n'interfère avec cela. Je le veux tel quel. Espérons que la sortie excessive ne soit qu'un bug qui sera corrigé.
jordy
4
@danthonyd Merci pour la reconnaissance. J'étais sûr d'avoir compris la question et j'étais certain qu'elle méritait une place dans la base de données de l'UA pour examen et réponse. C'est quelque chose qui m'inquiète depuis longtemps. Cependant, le problème n'est pas Snap. Le problème vient des fdiskdéveloppeurs. Ils devraient ajouter une méthode pour filtrer les vrais périphériques sur les pseudo-périphériques pour supprimer la sortie excessive et rendre leur application plus gérable, comme l'utilitaire de disque Gnome. Personne n'utiliserait fdiskpour gérer leurs périphériques de boucle . (suite) ...
LD James
4
... (suite) Ils n'ont même pas besoin de le voir dans la sortie fdisk . C'est à cela que servent losetup et d'autres commandes de pseudo- applications. Alors pourquoi prendre la peine de le montrer, si vous ne pouvez pas le gérer avec l'outil. Cette faille dans la conception de fdisk rend les applications comme parted et lsblk plus populaires et conviviales.
LD James
1
Je vous remercie. J'ajoute | egrep -v "^loop"à tous mes lsblkscripts 16.04 aujourd'hui pour réduire la maintenance le jour de ma conversion en 18.04. (Pour info, j'avais déjà voté pour votre réponse avant aujourd'hui)
WinEunuuchs2Unix
5

Je trouve cela aussi ennuyeux. Il semble que s'ils ne fonctionnent pas, ils ne devraient pas être montés ou répertoriés. Vous pouvez exécuter cette commande pour exclure tous les périphériques de boucle.

$ lsblk -e 7

user911218
la source
1

Si vous utilisez la version snap du moniteur système, vous verrez tous les systèmes de fichiers utilisés par snap ainsi que ceux que vous utilisez.

Un "correctif" simple consiste à désinstaller Gnome System Monitor de l'App Store. C'est la version snap.

Installez ensuite Gnome System Monitor à partir des référentiels normaux à l'aide du gestionnaire de paquets Synaptic. C'est la version normale qui installe un tas de fichiers partout sur votre partition racine. Agréable!

Et vous verrez exactement ce que vous attendez de voir lorsque vous lancez Gnome System Monitor ...

Anders Larsen
la source
Génial! C'est ce que je cherchais. Les commandes sont snap remove gnome-system-monitor(pas de sudo requis), suivies de sudo apt install gnome-system-monitor(cette fois avec sudo).
PerlDuck
0

Pour n'afficher que les montures excluant le bouclage, vous pouvez également simplement:

lsblk -af |grep -sv loop

;)

jbrios777
la source