====== GuideOS Snap Installer ====== ===== Übersicht ===== Der **GuideOS Snap Installer** ist ein Zenity-basiertes Bash-Skript zur grafischen Installation und Deinstallation von Snap auf GuideOS. | **Entwickler** | actionschnitzel | | **Dateiname** | guideos-snap-installer.sh | | **Benutzeroberfläche** | Zenity (GTK-Dialoge) | | **Funktion** | Snap installieren/deinstallieren | | **Liezens** | MIT | ===== Zweck ===== Das Tool ermöglicht die einfache Installation oder Deinstallation von Snap (Canonicals universelles Paketformat) auf GuideOS. Es kümmert sich automatisch um alle notwendigen Schritte: * AppArmor-Installation * Snapd-Dienst einrichten * PATH-Konfiguration * Automatische Desktop-Menü-Integration * Benutzer zur Snap-Gruppe hinzufügen Snap Pakete können danach über das Programm **Software** aus dem [[https://apps.gnome.org/de//Software/|GNOME-Projekt]] installiert werden. ===== Funktionen ===== * **Installation**: Vollständige Snap-Umgebung einrichten * **Deinstallation**: Snap komplett vom System entfernen * **AppArmor-Setup**: Automatische Installation von AppArmor (erforderlich für Snap) * **Desktop-Integration**: Automatische Verlinkung von Snap-Apps ins Anwendungsmenü * **PATH-Konfiguration**: ''/snap/bin'' wird dauerhaft zum PATH hinzugefügt * **Systemd-Integration**: Automatische Synchronisation bei neuen Snap-Installationen ===== Bedienung ===== ==== Programm starten ==== ./guideos-snap-installer.sh Oder aus dem Anwendungsmenü starten. ==== Snap installieren ==== - Programm starten - **Sudo-Passwort** eingeben - **Willkommensinfo** bestätigen - Falls Snap nicht installiert: **"Installieren"** wählen - Fortschrittsanzeige beobachten mit folgenden Schritten: * AppArmor-Komponenten installieren (5%) * Paketliste aktualisieren (10%) * Snapd und GNOME Software Plugin installieren (30%) * ''/snap'' Symlink erstellen (35%) * PATH dauerhaft setzen (40%) * Snapd-Dienst aktivieren (50%) * Automatische Menü-Verlinkung einrichten (70%) * Snap Core installieren (90%) - **Abschlussmeldung**: System neu starten ==== Snap deinstallieren ==== - Programm starten - **Sudo-Passwort** eingeben - Falls Snap installiert: **"Deinstallieren"** wählen - Fortschrittsanzeige beobachten mit folgenden Schritten: * Snap Store entfernen (10%) * GNOME Software Plugin entfernen (50%) * Snapd vollständig entfernen (90%) - **Abschlussmeldung**: System neu starten ===== Installation von Snap-Paketen ===== Nach erfolgreicher Installation von Snap können Pakete installiert werden: # Snap-Paket suchen snap find # Snap-Paket installieren sudo snap install # Installierte Snaps anzeigen snap list # Snap-Paket aktualisieren sudo snap refresh # Snap-Paket deinstallieren sudo snap remove ===== Technische Details ===== ==== Installierte Komponenten ==== ^ Komponente ^ Zweck ^ | **snapd** | Snap-Daemon (Hauptkomponente) | | **gnome-software** | Software-Center | | **gnome-software-plugin-snap** | Snap-Integration in Software-Center | | **apparmor** | Sicherheits-Framework (erforderlich für Snap) | | **apparmor-utils** | AppArmor-Hilfsprogramme | ==== Erstellte Dateien ==== ^ Datei/Verzeichnis ^ Zweck ^ | ''/snap'' | Symlink nach ''/var/lib/snapd/snap'' | | ''/snap/bin'' | Snap-Executable-Verzeichnis | | ''/etc/profile.d/snap_path.sh'' | PATH-Konfiguration für alle Benutzer | | ''/usr/local/bin/snap-desktop-sync.sh'' | Skript zur Desktop-Menü-Synchronisation | | ''/etc/systemd/system/snap-desktop-sync.service'' | Systemd-Service für Desktop-Sync | | ''/etc/systemd/system/snap-desktop-sync.path'' | Systemd Path-Watcher für automatische Sync | ==== Desktop-Menü-Integration ==== Das Tool richtet automatische Desktop-Integration ein: **Funktionsweise**: - Systemd Path-Unit überwacht ''/var/lib/snapd/desktop/applications/'' - Bei neuen ''.desktop''-Dateien wird automatisch ''snap-desktop-sync.sh'' ausgeführt - Symlinks werden von ''/var/lib/snapd/desktop/applications/'' nach ''~/.local/share/applications/'' erstellt - Neue Snap-Apps erscheinen automatisch im Anwendungsmenü ==== PATH-Konfiguration ==== Das Skript ''/etc/profile.d/snap_path.sh'' fügt ''/snap/bin'' zum PATH hinzu: # Snap PATH if [ -d "/snap/bin" ] && ! echo "$PATH" | grep -q "/snap/bin" ; then export PATH="$PATH:/snap/bin" fi Dies wird automatisch für alle Benutzer beim Login geladen. ===== Wichtige Hinweise ===== * **Neustart erforderlich**: Nach Installation oder Deinstallation muss das System neu gestartet werden * **AppArmor erforderlich**: Snap funktioniert nur mit aktiviertem AppArmor * **Sudo-Rechte**: Das Skript benötigt Administratorrechte * **Snap-Gruppe**: Benutzer wird automatisch zur ''snap''-Gruppe hinzugefügt * **PATH**: ''/snap/bin'' wird nach Neustart automatisch verfügbar * **Deinstallation**: Entfernt alle Snaps und deren Daten ===== Was ist Snap? ===== **Snap** ist ein universelles Paketformat von Canonical (Ubuntu): * **Container-basiert**: Apps laufen isoliert vom System * **Plattformübergreifend**: Funktioniert auf vielen Linux-Distributionen * **Automatische Updates**: Snaps aktualisieren sich selbstständig * **Versionierung**: Mehrere Versionen parallel installierbar * **Sandboxing**: Apps sind durch AppArmor abgesichert ===== Snap vs. andere Paketformate ===== ^ Merkmal ^ Snap ^ Flatpak ^ APT/DEB ^ | **Container** | Ja | Ja | Nein | | **Sandboxing** | AppArmor | Bubblewrap | Nein | | **Automatische Updates** | Ja | Optional | Nein | | **Systemintegration** | Mittel | Gut | Sehr gut | | **Größe** | Größer | Größer | Kleiner | | **Anbieter** | Canonical | Community | Distribution | ===== Häufig verwendete Snap-Pakete ===== Beispiele beliebter Snap-Pakete: # Entwicklung sudo snap install code --classic # Visual Studio Code sudo snap install pycharm-community --classic # PyCharm # Multimedia sudo snap install vlc sudo snap install spotify sudo snap install obs-studio # Kommunikation sudo snap install discord sudo snap install telegram-desktop sudo snap install slack --classic # Produktivität sudo snap install libreoffice sudo snap install gimp sudo snap install inkscape **Hinweis**: ''--classic'' erlaubt vollständigen Systemzugriff (weniger Sandboxing). ===== Problembehandlung ===== ==== Snap-Befehl nicht gefunden ==== # PATH manuell laden source /etc/profile.d/snap_path.sh # Oder System neu starten reboot ==== AppArmor nicht aktiv ==== # AppArmor-Status prüfen sudo systemctl status apparmor # AppArmor aktivieren sudo systemctl enable --now apparmor ==== Snap-Apps erscheinen nicht im Menü ==== # Desktop-Sync manuell ausführen sudo /usr/local/bin/snap-desktop-sync.sh # Systemd Path-Unit prüfen systemctl status snap-desktop-sync.path # Desktop-Datenbank aktualisieren update-desktop-database ~/.local/share/applications ==== Snapd-Dienst startet nicht ==== # Dienst-Status prüfen sudo systemctl status snapd # Dienst neu starten sudo systemctl restart snapd # Logs anzeigen sudo journalctl -u snapd -n 50 ==== Installation schlägt fehl ==== # Internet-Verbindung prüfen ping -c 3 snapcraft.io # APT-Cache aktualisieren sudo apt update # Manuell installieren sudo apt install snapd apparmor ===== Snap-Befehle Übersicht ===== ^ Befehl ^ Funktion ^ | ''snap find '' | Pakete suchen | | ''snap info '' | Paket-Informationen anzeigen | | ''snap install '' | Paket installieren | | ''snap install --classic'' | Paket mit vollem Systemzugriff installieren | | ''snap list'' | Installierte Pakete auflisten | | ''snap refresh'' | Alle Pakete aktualisieren | | ''snap refresh '' | Bestimmtes Paket aktualisieren | | ''snap remove '' | Paket deinstallieren | | ''snap revert '' | Auf vorherige Version zurücksetzen | | ''snap version'' | Snap-Version anzeigen | | ''snap connections '' | Berechtigungen anzeigen | ===== Vorteile von Snap ===== * **Aktuelle Software**: Immer neueste Versionen verfügbar * **Einfache Installation**: Ein Befehl für alle Distributionen * **Sicherheit**: Sandboxing durch AppArmor * **Rollback**: Einfache Rückkehr zu alter Version * **Entwicklerfreundlich**: Einfaches Packaging für Entwickler ===== Nachteile von Snap ===== * **Größere Dateien**: Enthalten alle Abhängigkeiten * **Langsamerer Start**: Container-Overhead * **Snap Store**: Zentralisiert bei Canonical * **Integration**: Manchmal weniger gut als native Pakete * **Proprietary**: Snap Store Backend ist nicht Open Source