Ubuntu 26.04 / Verwaltung der Snap-Installation, Berechtigungen und Updates
Verwalten Sie Ubuntu Server Snaps über die Befehlszeile, indem Sie installierte Revisionen, Herausgeber, Kanäle, Schnittstellen und den Aktualisierungsstatus überprüfen. Snaps sind getrennt von APT Deb-Paketen, daher sollten Ausführungspfade, Formate und Datenstandorte auch bei identischen Programmnamen unterschieden werden.
Paketierung und Herausgeber identifizieren
Lesen Sie Herausgeber, Beschreibung und Kanäle mit snap info APP_NAME und vergleichen Sie den installierten Namen, die Version und den Tracking-Kanal mit snap list. Verwenden Sie command -v COMMAND, um die ausführbare Datei zu identifizieren. Übereinstimmende Namen bedeuten nicht, dass dieselben Maintainer, Aktualisierungspfade oder Konfigurationsorte bestehen.
snap list
snap changes
snap refresh --time
Zeichnen Sie die tatsächlichen Namen, Versionen und verfolgten Kanäle aus snap list auf. snap changes zeigt Vorgänge wie Installationen und Aktualisierungen. Keine APT-Updates bedeuten nicht, dass jeder Snap aktuell ist.
Installieren und führen Sie eine kleine Übungsanwendung aus
snap info hello-world
sudo snap install hello-world
hello-world
Prüfen Sie, ob hello-world bereits installiert war; bewahren Sie eine vorhandene Installation und den Kanal. Überprüfen Sie den Herausgeber vor der Installation und verifizieren Sie anschließend die Ausführung. Wenn der Befehl nicht im PATH ist, prüfen Sie die Sitzung und /snap/bin, anstatt Duplikate zu installieren.
Verstehen Sie Kanäle und Einschränkungen
Kanäle können einen Track, eine Risikostufe und einen Branch angeben. Stable, Candidate, Beta und Edge stehen für verschiedene Release-Ströme; behandeln Sie sie nicht als gleichermaßen geeignet. Bevorzugen Sie den vom Herausgeber empfohlenen stabilen Stream und protokollieren Sie den bestehenden Kanal und das Daten-Backup, bevor Sie wechseln.
Strict, Classic und Devmode haben unterschiedliche Einschränkungsbedingungen. Verstehen Sie, warum eine App Classic-Zugriff benötigt. Fügen Sie --classic oder --devmode nicht einfach hinzu, um einen Installationsfehler zu unterdrücken.
Schnittstellen und Zugriffsfehler prüfen
Wählen Sie einen installierten Namen aus der Snap-Liste und prüfen Sie snap connections app-name. Fehler bei externen Speichern können sowohl Schnittstellen als auch Dateisystem-Mounts oder Berechtigungen betreffen. Schließen Sie nicht jede Schnittstelle willkürlich an.
Identifizieren Sie die erforderliche Schnittstelle mit snap info APP_NAME, snap connections APP_NAME und der Dokumentation des Herausgebers, gewähren Sie nur diesen Zugriff und testen Sie ihn. Notieren Sie den ursprünglichen Zustand, damit Sie nur die neu hinzugefügte Schnittstelle trennen können. Schnittstellenverbindungen ersetzen nicht die Berechtigungen des Host-Dateisystems.
Überprüfen Sie deklarierte Schnittstellen und stellen Sie nur eine neue Verbindung wieder her
Für einen installierten Server-Snap identifizieren Sie eine erforderliche Schnittstelle anhand der Dokumentation des Herausgebers. Vergleichen Sie Plug/Slot in snap connections APP_NAME mit der snap interface INTERFACE_NAME. Übergeben Sie das exakt beobachtete SNAP:PLUG und SLOT an dieses Skript. Ein fehlender deklarierter Plug ist ein Grund aufzuhören, nicht eine Berechtigung zu erfinden.
Speichern Sie das vollständige Skript als ~/test-snap-interface.sh und führen Sie bash ~/test-snap-interface.sh ACTUAL_SNAP:PLUG ACTUAL_SLOT aus. Vorhandene Verbindungen bleiben intakt. Testen Sie die dokumentierte Funktion nur in einem anderen Terminal und drücken Sie dann Enter, um die neue Verbindung rückgängig zu machen. Gewähren Sie keine sensiblen System-Schnittstellen nur zum Üben auf einem Produktionsserver.
set -eu
if [ "$#" -ne 2 ]; then
printf 'Usage: bash test-snap-interface.sh SNAP:PLUG SLOT\n' >&2; exit 2
fi
plug=$1
slot=$2
app=${plug%%:*}
case "$plug" in *:*) ;; *) printf 'Use the exact Plug from snap connections.\n' >&2; exit 2 ;; esac
case "$slot" in *:*) ;; *) printf 'Use the exact Slot from snap connections.\n' >&2; exit 2 ;; esac
snap list "$app"
connections=$(LC_ALL=C snap connections "$app")
printf '%s\n' "$connections"
previous_slot=$(printf '%s\n' "$connections" | awk -v p="$plug" '$2 == p {print $3}')
case "$previous_slot" in
-) ;;
'') printf 'Declared plug not found; stop.\n' >&2; exit 1 ;;
*) printf 'Already connected to %s; preserve it.\n' "$previous_slot"; exit 0 ;;
esac
restore() {
original_status=$?
trap - EXIT HUP INT TERM
if ! connections=$(LC_ALL=C snap connections "$app"); then
printf 'Cannot inspect the connection; verify restoration manually.\n' >&2; exit 1
fi
current_slot=$(printf '%s\n' "$connections" | awk -v p="$plug" '$2 == p {print $3}')
case "$current_slot" in
"$previous_slot") ;;
"$slot")
if ! sudo snap disconnect "$plug" "$slot"; then
printf 'Restoration failed; inspect the connection.\n' >&2; exit 1
fi
;;
*) printf 'Unexpected connection state; inspect before disconnecting.\n' >&2; exit 1 ;;
esac
if ! connections=$(LC_ALL=C snap connections "$app"); then
printf 'Cannot verify restoration; inspect the connection.\n' >&2; exit 1
fi
printf '%s\n' "$connections"
restored_slot=$(printf '%s\n' "$connections" | awk -v p="$plug" '$2 == p {print $3}')
if [ "$restored_slot" != "$previous_slot" ]; then
printf 'Original connection state was not restored.\n' >&2; exit 1
fi
exit "$original_status"
}
trap restore EXIT
trap 'exit 129' HUP
trap 'exit 130' INT
trap 'exit 143' TERM
sudo snap connect "$plug" "$slot"
snap connections "$app"
read -r -p 'Run your documented app test in another terminal; press Enter to restore: ' answer
Überprüfen Sie, dass ein nicht verbundenes - zum tatsächlichen Slot wird, und überprüfen Sie dann den ursprünglichen Zustand mit snap connections APP_NAME nach dem Beenden. Das Skript trennt nur den angeforderten Slot und fragt den Plug erneut ab, um seinen ursprünglichen unverbundenen Zustand zu überprüfen. Trennungs-, Inspektions- oder Zustandsüberprüfungsfehler führen zu einem Nicht-Null-Abschlussstatus; ein früherer Übungsfehler behält seinen Status nach erfolgreicher Wiederherstellung bei. Eine Bereinigung wird auch bei Ctrl+C und Terminationssignalen versucht, kann jedoch Stromausfälle oder jede erzwungene Beendigung nicht abdecken. Zeichnen Sie den ursprünglichen Plug/Slot und den Wiederherstellungsbefehl auf. Überprüfen Sie Datei-Berechtigungen des Hosts und die Dienstrichtlinien separat.
Der offizielle Snap-Nutzungsleitfaden dokumentiert Verbindungs- und Trennungsbefehle.
Updates, Rollback und beim Entfernen verbleibende Daten prüfen
Sie können eine Aktualisierung mit sudo snap refresh app-name anfordern, nachdem Sie die Auswirkungen auf laufende Apps und Dienste überprüft haben. Ein Revisions-Rollback garantiert keine rückwärtskompatiblen Anwendungsdaten und ersetzt keine Sicherungen.
Entfernen Sie nur die neu installierte Übungs-App mit sudo snap remove hello-world. Überprüfen Sie automatische Datenschnappschüsse, wenn erstellt, mit snap saved, und entscheiden Sie über die Aufbewahrung separat. Das Entfernen einer App, das Beibehalten eines Schnappschusses und das Löschen aller Benutzerdaten sind unterschiedliche Vorgänge.




