pantomime
Anmeldungsdatum: 20. März 2013
Beiträge: 512
|
noisefloor schrieb: könnte es sein, dass die ziemlich wenig Ahnung von den Paketquelle und alternativen Installationsmethoden hast?
Ich bin dabei zu lernen. Was ich bis heute gelernt habe, dass - egal ob Experte oder Anfänger - die Qualität, die Vertrauenswürdigkeit einer Quelle bei der Auswahl und Installation von Ubuntu-Werkzeugen ein wichtiges Thema bleiben wird. noisefloor schrieb: ... bevor du dich an Mikrooptimierung vergehst probierst. Wenn du dich ins Wiki einbringen willst gibt es sicherlich viel bessere Weg also sowas hier.
Danke für die Hinweise auf Fehler. Ich würde mich freuen, wenn wir in diesem Thread, wo es um den snap-Artikel im Wiki geht, beim Thema bleiben und ich würde mich auf Rückmeldungen zu meinem Vorschlag freuen die wertende Bezeichnung "Vorteil" im Artikel durch eine neutrale Formulierung
Eine Besonderheit von Paketen im Snap-Format ist, dass damit unabhängig von der Ubuntu-Version beim Anwender aktuelle Versionen der Anwendungssoftware installierbar sind, weil für das Ausführen der Software notwendige Module in der Snap-Datei mitgeliefert werden.
zu ersetzen. pantomime schrieb: Bei Paketen aus den offiziellen Paketquellen gibt es bei Linuxdistribution wie Ubuntu und dessen offizielle Derivate keine Versionssprünge. Für alle Pakete der Standardinstallation (offizielle Paketquellen) "stellt das Ubuntu-Team kommerziellen Kundendienst und Sicherheits-Korrekturen zur Verfügung."
noisefloor schrieb: Wer ist das "Ubuntu Team"? "Sicherheitskorrekturen" (soll wohl ein extrem schräges Wort für "Updates" sein?) bekommen auch Pakete aus Universe eher selten bis nie. [...] Das Wort "Kundendienst" ist in dem Kontext auch mega-schräg.
Ich habe in meinem Formulierungsvorschlag gut erkennbar https://de.wikipedia.org/wiki/Ubuntu_(Betriebssystem) als Quelle für diese Begriffe genannt. Ich bin davon ausgegangen, dass die Begriffe geläufig und selbsterklärend sind. noisefloor schrieb: ... Es gibt z.B. mehrere hundert ungetestete Artikel, die nach einem Tester und Bearbeiter schreien.
Ich rege an, die Diskussion zum Thema, wie man die Benutzer dafür gewinnt, sich im https://wiki.ubuntuusers.de/ aktiver einzubringen in einem anderen Thread zu führen. gruss, pantomime
|
Ubunux
Anmeldungsdatum: 12. Juni 2006
Beiträge: 17439
|
Nimm einfach zur Kenntnis, dass dein Vorschlag wegen inhaltlicher Fehler nicht konsensfähig ist! Wegen minimaler Änderungen der Wortwahl in der Einleitung des Artikels jetzt so eine lange Diskussion anzufangen ist ermüdend!
|
noisefloor
Anmeldungsdatum: 6. Juni 2006
Beiträge: 29567
|
Hallo, die letzten Änderung von Mylin ist inhaltlich komplett falsch. Mit dem Skript werden _nicht_ verwaiste snaps gefunden und entfernt, sondern ausschließlich alle älteren, noch installierten Revisionen von snaps. Wenn ein snap, welches als Abhängigkeit installiert wurde, nur in einer Revision auf dem System vorhanden ist, dann ist es nicht als "deaktiviert" markiert, wenn das snap, welches das andere snap mitinstalliert hat, wieder deinstalliert wird. Wenn das jemand live testen möchte: unter 24.04 in der Grundinstallation (=Fx und TB als snap) mal sudo snap kompare ausführen. Dann wird das snap kf5-5-111-qt-5-15-11-core22 als Abhängigkeit von Kompare mit installiert. Wenn man dann sudo snap remove --purge kompare ausführt, bleibt kf5-5-111-qt-5-15-11-core22 zurück und ist nicht als "deaktiviert" markiert. Bitte die Revision zurücksetzen. Gruß, noisefloor
|
kB
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 9721
Wohnort: Münster
|
noisefloor schrieb: […] die letzten Änderung von Mylin ist inhaltlich komplett falsch […]
Dein Einwand trifft zu, aber die einfache Entfernung von (aus welchen Gründen auch immer) deaktivierten (disabled ) Snaps per Skript ist sinnvoll, z.B. um verschwendeten Speicherplatz wiederzugewinnen.
Bitte die Revision zurücksetzen.
Ich habe statt dessen unter Erhaltung des Skripts (bis auf kleine Verbesserung) den Abschnitt umformuliert. So OK?
|
noisefloor
Anmeldungsdatum: 6. Juni 2006
Beiträge: 29567
|
So OK?
Ich habe den Text mit mehr Erklärung erweitert, damit der geneigte Nutzer eine besser Entscheidungsgrundlage hat, ob er das Skript ausführen will (oder nicht). Gruß, noisefloor
|
Ubunux
Anmeldungsdatum: 12. Juni 2006
Beiträge: 17439
|
Man kann imho doch über einen kleinen Umweg zu einer älteren Version zurückkehren: die entsprechende SnapApp deinstallieren und dann wieder mit der Option --revision eine alte Revision installieren. Wer Probleme mit dem Speicherplatz hat, der braucht kein Script, der braucht eine snapfreie Distribution. 🤓
|
tomtomtom
Supporter
Anmeldungsdatum: 22. August 2008
Beiträge: 55438
Wohnort: Berlin
|
Ubunux schrieb: Wer Probleme mit dem Speicherplatz hat, der braucht kein Script, der braucht eine snapfreie Distribution. 🤓
Oder mehr Speicherplatz. Viel hilft viel!1!!11 😈
|
noisefloor
Anmeldungsdatum: 6. Juni 2006
Beiträge: 29567
|
Hallo,
die entsprechende SnapApp deinstallieren und dann wieder mit der Option --revision eine alte Revision installieren.
Theoretisch ja, praktisch gibt es aber keinen mir bekannten Weg, eine alte Revisionsnummer von snap $FOO herauszufinden. Also wenn man die nicht irgendwie irgendwo notiert hat, hat man Pech. Gruß, noisefloor
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13209
|
Ich hätte noch ein Skript, das ausgibt, welche Abhängigkeiten es gibt. Ist allerdings in Ruby. Haltet Ihr das für nützlich? 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 | #!/usr/bin/ruby
# Show snap dependencies
require 'set'
def find_base(snap)
IO.popen(%w{snap info --verbose} << snap, 'r') do |io|
io.each_line do |line|
if /^base:\s*(\S+)/ =~ line
return $1
end
end
end
nil
end
def find_dependencies(snap)
deps = Set.new
IO.popen(%w{snap connections} << snap, 'r') do |io|
io.each_line do |line|
if /^\S+\s+\S+\s+([^:\s]+):/ =~ line
deps << $1
end
end
end
deps
end
# find all installed snaps
installed = nil
IO.popen(%w{snap list}, 'r') do |io|
io.each_line do |line|
if installed
installed << line[/^\S+/]
else
installed = Set.new
end
end
end
# find snaps to keep, based on dependency
keep = Set.new
installed.each do |snap|
base = find_base(snap) and keep << base
keep.merge find_dependencies(snap)
end
puts 'No dependencies:', (installed - keep).sort
puts
puts 'Dependencies:', keep.sort
|
|
noisefloor
Anmeldungsdatum: 6. Juni 2006
Beiträge: 29567
|
Hallo, noch ein Nachtrag zur Ergänzung von Mylin: die funktioniert _nur_, wenn das System auf Englisch eingestellt ist. Wenn das System auf deutsch ist, muss man im Skript disabled durch deaktiviert ersetzen. Wenn das System auf niederländisch eingestellt ist, muss man disabled durch uitgeschakeld ersetzen, im Französischen durch désactivé usw. Sachdienliche Ideen, wie man das im Wikiartikel einbaut, sind willkommen. @rklm: ich arbeite gerade an einem Howto, wie man verwaiste snaps findet und entfernt. Da passt dein Script dann besser hin. Gruß, noisefloor
|
kB
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 9721
Wohnort: Münster
|
noisefloor schrieb: […] noch ein Nachtrag zur Ergänzung von Mylin: die funktioniert _nur_, wenn das System auf Englisch eingestellt ist. Wenn das System auf deutsch ist, muss man im Skript disabled durch deaktiviert ersetzen.
Nein. Sein ursprüngliches Skript funktionierte nur, wenn das System auf Deutsch eingestellt war und er hatte das auch richtigerweise im Text angesprochen. Meine bereits vorgenommene kleine Verbesserung LANG= bessert das, indem das Skript nun für den Befehl snap selbst auf die Programmsprache (English) umschaltet und daher mit jeder Einstellung der Systemsprache gleich funktionieren sollte.
|
noisefloor
Anmeldungsdatum: 6. Juni 2006
Beiträge: 29567
|
Hallo, Danke für die Erklärung. Funktioniert auch so, wie du sagst. Passt also doch. Gruß, noisefloor
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13209
|
noisefloor schrieb:
@rklm: ich arbeite gerade an einem Howto, wie man verwaiste snaps findet und entfernt. Da passt dein Script dann besser hin.
Ich versuche auch noch eine Version ohne Ruby nur mit den Standard-Werkzeugen (sed, awk) zu bauen, wenn ich ein wenig Ruhe habe.
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13209
|
rklm schrieb:
Ich versuche auch noch eine Version ohne Ruby nur mit den Standard-Werkzeugen (sed, awk) zu bauen, wenn ich ein wenig Ruhe habe.
Ging schneller als ich dachte: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | #!/bin/sh
# Find all snaps which are used somewhere:
# 1. base snaps
# 2. plugged interfaces
echo 'Calculating...' >&2
{
for snap in $(snap list | awk 'NR>1 {print $1}'); do
snap info --verbose "$snap"
done | sed -n 's#^base: *##p'
snap connections | awk 'NR>1 { if (match($3, /^[^:]+/, a)) print a[0] }'
} | sort -u
|
Variante: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | #!/bin/sh
# Find all snaps which are used somewhere:
# 1. base snaps
# 2. plugged interfaces
echo 'Calculating...' >&2
{
for snap in $(snap list | awk 'NR>1 {print $1}'); do
snap info --verbose "$snap"
done | awk '/^base:/ {print $2}'
snap connections | awk 'NR>1 { if (match($3, /^[^:]+/, a)) print a[0] }'
} | sort -u
|
Und, Kandidaten (!) für das Löschen: | #!/bin/bash
# Candidates for deletion
snap list | awk 'NR>1 {print $1}' | fgrep -vf <(snaps-used)
|
Darunter sind natürlich auch alle Snaps, die man explizit installiert hat.
|
Mylin
Anmeldungsdatum: 23. Juli 2024
Beiträge: 339
|
noisefloor schrieb: ... ist inhaltlich komplett falsch. Mit dem Skript werden _nicht_ verwaiste snaps gefunden und entfernt, sondern ausschließlich alle älteren, noch installierten Revisionen von snaps. ...
Da war ich wohl etwas zu optimistisch, ich bitte dies zu entschuldigen. Bisher habe ich mit diesem Skript Snap aufgeräumt und soweit keine verwaisten Snaps vorgefunden (vielleicht auch nicht richtig gesucht). Ich habe mir die Thematik jetzt einmal genauer betrachtet und dazu ein kleines Skript erstellt. Was tut dieses Skript? Es sucht mit snap connections --all in der Schnittstelle content nach snaps die keine Verbindung haben.
Dabei ist mir aufgefallen, dass es Snaps ohne Verbindung gibt, die für andere Snaps allerdings noch notwendig sind. Deshalb wird mit find /snap geprüft, ob das Snap als default-provider bei anderen Snaps hinterlegt ist. Ist dies der Fall wird das Snap nicht deinstalliert. Hat ein Snap keine Verbindung (Abhängigkeit) und ist nicht als default-provider hinterlegt wird es deinstalliert. Das Skript ist eine erste Version, wer testen und berichten mag oder Verbesserungen für den Code hat ist gerne dazu eingeladen. | #!/bin/bash
orphan=$(snap connections --all | grep 'content' | grep -v 'themes' | grep -v 'slot' | awk '$2 == "-" {print $3}' | cut -d: -f1)
provider=$(sudo find /snap -name "snap.yaml" | while read i; do grep -E "default-provider:" "$i" | cut -d: -f2; done)
if [[ $provider =~ $orphan ]]; then
plug=$(snap connections $orphan | grep 'content' | awk '$2 != "-" {print $2}' | cut -d: -f1)
echo "Zu Snap $orphan sind keine Abhängigkeiten vorhanden, allerdings ist Snap $orphan default:provider von Snap $plug und wird deshalb nicht deinstalliert."
else
sudo snap remove $orphan
fi
|
|