====== 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