Ich habe eine große Frage zu Snaps. Werden damit Bibliotheken geteilt? Ich frage, weil ich beim Einstieg in Ubuntu so beeindruckt war, dass es Bibliotheken teilt und dadurch Speicherplatz auf der Festplatte spart. Macht Snaps das immer noch? Oder liege ich mit apt völlig falsch?
Antwort1
Weder bei Snaps noch bei Apt/Dpkg gibt es eine Garantie dafür, dass die von Ihnen verwendete App bei allen vorhandenen Abhängigkeiten auf systemweite gemeinsam genutzte Bibliotheken angewiesen ist.
Je nachdem, wie ein Snap erstellt wird, verwendet er möglicherweise einige Bibliotheken, die mit anderen Snaps gemeinsam genutzt werden (der Kern-Snap umfasst beispielsweise eine libc und eine libstdc++). Wenn es jedoch um Stabilität, Sicherheit und die Gewährleistung, dass Benutzer in Apps die neuesten Funktionen erhalten, geht, ist keine der beiden Vorgehensweisen so einfach, wie es scheint.
Antwort2
Zum aktuellen Zustand meines Systems:
walt@bat:~(0)$ lsb_release -a;snap list
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.6 LTS
Release: 16.04
Codename: xenial
Name Version Rev Tracking Publisher Notes
bw 1.8.0 13 stable bitwarden✓ -
core 16-2.42.1 8039 stable canonical✓ core
large-pcap-analyzer 3.6.0 97 stable francesco-montorsi -
mpv 0.26.0 1 beta casept -
mpv-casept 0.24.0 2 stable casept disabled
walt@bat:~(0)$
Dieser Befehl beantwortet Ihre Frage für MEIN System zum jetzigen Zeitpunkt:
find /snap -type f -executable | \
xargs file |\
grep ELF |\
cut -d: -f1 |\
xargs -n 1 ldd |\
grep /snap
Verwenden Sie
find
, um alle „ausführbaren“ Dateien unter zu finden/snap
.Fragen Sie
file
: Sind die Dateien Skripte oder ausführbare Dateien oder was?Für uns sind nur die „ELF“-Dateien von Belang, da diese gemeinsam genutzte Bibliotheken verwenden.
file
gibt den Dateinamen, einen Doppelpunkt, einige Leerzeichen und die Beschreibung aus. Ich möchte nur den Dateinamen.Dann verwende ich
xargs
, um die Dateinamen einzeln einzugeben (-n 1
), umldd
die von jeder ausführbaren ELF-Datei verwendeten dynamischen Bibliotheken aufzulisten.Befinden sich irgendwelche Bibliotheken in
/snap
?Nichts, was ich sehe (außer „was ist, wenn der andere, die Bibliothek enthaltende Snap nicht installiert ist?“), verhindert dies,