====== Snap vs. deb: Unterschiede und Verwendung ====== Linux-Software kann auf verschiedene Arten installiert werden. Die beiden wichtigsten Paketformate unter Ubuntu sind **deb-Pakete** (klassisch) und **Snap-Pakete** (modern). Diese Seite erklärt die Unterschiede, Vor- und Nachteile sowie die richtige Verwendung. ===== Voraussetzungen ===== * Zugriff auf die Linux-Kommandozeile * Grundkenntnisse in [[sammlung:bash_kommandos|Bash-Kommandos]] * Verständnis der [[sammlung:paketmanagement|Paketverwaltung]] ===== Übersicht ===== ^ Merkmal ^ deb-Pakete ^ Snap-Pakete ^ | **Format** | .deb (Debian Package) | .snap (Snapcraft) | | **Tool** | apt, dpkg | snap | | **Abhängigkeiten** | System-Bibliotheken | Eingebaut (containerisiert) | | **Größe** | Klein | Größer (enthält Abhängigkeiten) | | **Updates** | System-Updates | Automatisch (4x täglich) | | **Isolation** | Keine | Sandboxing (AppArmor/Seccomp) | | **Speicherort** | /usr, /etc, /var | /snap | | **Kompatibilität** | Nur Debian-basiert | Distro-unabhängig | ===== deb-Pakete (APT/DPKG) ===== ==== Was sind deb-Pakete? ==== deb ist das traditionelle Paketformat für Debian und Ubuntu. Pakete werden zentral verwaltet und nutzen System-Bibliotheken gemeinsam. ==== Vorteile ==== * ✅ **Klein und effizient** - Shared Libraries * ✅ **Bewährt und stabil** - Seit Jahrzehnten im Einsatz * ✅ **Tief integriert** - Volle Systemintegration * ✅ **Schneller Start** - Keine Container-Overhead * ✅ **Weniger Speicher** - Bibliotheken werden geteilt ==== Nachteile ==== * ❌ **Dependency Hell** - Abhängigkeitsprobleme möglich * ❌ **Alte Versionen** - Oft veraltete Software in Repos * ❌ **Update-Probleme** - System-Updates können brechen * ❌ **Keine Isolation** - Apps greifen voll aufs System zu ==== Installation und Verwaltung ==== # Paket suchen apt search firefox # Paket-Informationen anzeigen apt show firefox # Paket installieren sudo apt install firefox # Paket aktualisieren sudo apt update sudo apt upgrade firefox # Paket entfernen sudo apt remove firefox # Paket + Konfiguration entfernen sudo apt purge firefox # Installierte Pakete auflisten dpkg -l | grep firefox # Paketinhalt anzeigen dpkg -L firefox ==== Repositories ==== # Repository-Quellen anzeigen cat /etc/apt/sources.list ls /etc/apt/sources.list.d/ # PPA hinzufügen (Personal Package Archive) sudo add-apt-repository ppa:mozillateam/ppa sudo apt update # Repository entfernen sudo add-apt-repository --remove ppa:mozillateam/ppa ===== Snap-Pakete ===== ==== Was sind Snap-Pakete? ==== Snap ist ein modernes, containerisiertes Paketformat von Canonical. Jedes Snap enthält alle benötigten Abhängigkeiten und läuft in einer isolierten Umgebung. ==== Vorteile ==== * ✅ **Immer aktuell** - Direkt vom Entwickler * ✅ **Distro-unabhängig** - Läuft überall * ✅ **Sicherheit** - Sandboxing und Confinement * ✅ **Keine Dependency Hell** - Alles eingebaut * ✅ **Einfache Rollbacks** - Alte Version wiederherstellen * ✅ **Automatische Updates** - Keine manuelle Pflege ==== Nachteile ==== * ❌ **Größer** - Enthält alle Abhängigkeiten * ❌ **Langsamer Start** - Container-Overhead * ❌ **Mehr Speicher** - Keine Shared Libraries * ❌ **Eingeschränkter Zugriff** - Confinement kann stören * ❌ **Proprietär** - Snap Store von Canonical kontrolliert ==== Installation und Verwaltung ==== # Snap-System prüfen snap version # Paket suchen snap find firefox # Paket-Informationen anzeigen snap info firefox # Paket installieren sudo snap install firefox # Paket aus bestimmtem Channel sudo snap install firefox --channel=beta sudo snap install firefox --edge # Paket aktualisieren sudo snap refresh firefox # Alle Snaps aktualisieren sudo snap refresh # Paket entfernen sudo snap remove firefox # Installierte Snaps auflisten snap list # Snap-Verbindungen anzeigen snap connections firefox ==== Confinement und Permissions ==== # Confinement-Level anzeigen snap info firefox | grep confinement # Verbindungen (Interfaces) anzeigen snap connections firefox # Interface verbinden sudo snap connect firefox:home # Interface trennen sudo snap disconnect firefox:home # Verfügbare Interfaces snap interface **Confinement-Levels:** * **strict** - Vollständig isoliert (sicher) * **classic** - Voller Systemzugriff (wie deb) * **devmode** - Entwicklungsmodus (uneingeschränkt) ===== Direkter Vergleich ===== ==== Beispiel: Firefox ==== # Als deb-Paket sudo apt install firefox # Größe: ~50 MB # Start: Schnell # Integration: Perfekt # Updates: Mit System-Updates # Als Snap-Paket sudo snap install firefox # Größe: ~250 MB # Start: Langsamer # Integration: Eingeschränkt # Updates: Automatisch, immer aktuell ==== Speichernutzung ==== # deb-Pakete dpkg -L firefox | xargs du -ch | tail -1 # Snap-Pakete du -sh /snap/firefox # Snap-Revisionen (alte Versionen) snap list --all firefox ===== Wann was verwenden? ===== ==== Verwende deb-Pakete für: ==== * ✅ System-Tools und Dienste * ✅ Server-Software * ✅ Kommandozeilen-Tools * ✅ Software die tief ins System integriert sein muss * ✅ Wenn Speicherplatz knapp ist * ✅ Wenn Performance kritisch ist ==== Verwende Snap-Pakete für: ==== * ✅ Desktop-Anwendungen * ✅ Software die immer aktuell sein muss * ✅ Proprietäre Software * ✅ Entwickler-Tools * ✅ Wenn Sicherheit wichtig ist * ✅ Software die nicht in Repos ist ===== Flatpak - Die Alternative ===== Neben deb und Snap gibt es noch **Flatpak** als drittes Format: # Flatpak installieren sudo apt install flatpak # Flathub hinzufügen flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo # App installieren flatpak install flathub org.mozilla.firefox # Apps auflisten flatpak list # App starten flatpak run org.mozilla.firefox ^ Merkmal ^ Snap ^ Flatpak ^ | Entwickler | Canonical (Ubuntu) | Community | | Store | Snap Store (proprietär) | Flathub (offen) | | Verbreitung | Ubuntu-fokussiert | Distro-neutral | | Sandboxing | AppArmor/Seccomp | Bubblewrap | ===== Praktische Beispiele ===== ==== System aufräumen ==== # Nicht benötigte deb-Pakete entfernen sudo apt autoremove sudo apt autoclean # Alte Snap-Versionen entfernen sudo snap set system refresh.retain=2 # Manuell alte Revisionen löschen snap list --all | awk '/disabled/{print $1, $3}' | \ while read snapname revision; do sudo snap remove "$snapname" --revision="$revision" done ==== Beide Versionen parallel ==== # deb-Version installiert als /usr/bin/firefox sudo apt install firefox # Snap-Version installiert als /snap/bin/firefox sudo snap install firefox # Welche Version wird verwendet? which firefox # Spezifische Version starten /usr/bin/firefox # deb /snap/bin/firefox # snap snap run firefox # snap ==== Snap-Alternativen bevorzugen ==== # Ubuntu bevorzugt manchmal Snaps # APT umleiten auf echtes deb sudo apt install firefox # Snap-Präferenz deaktivieren sudo apt remove --purge snapd # Radikal! # Oder PPA verwenden sudo add-apt-repository ppa:mozillateam/ppa sudo apt update sudo apt install -t 'o=LP-PPA-mozillateam' firefox ===== Troubleshooting ===== ==== Snap-Probleme ==== # Snap funktioniert nicht sudo systemctl status snapd sudo systemctl restart snapd # Snap hängt beim Update sudo killall snap sudo snap refresh # Zu viele alte Revisionen sudo snap set system refresh.retain=2 # AppArmor-Probleme sudo dmesg | grep DENIED sudo aa-status ==== deb-Probleme ==== # Kaputte Pakete reparieren sudo apt --fix-broken install sudo dpkg --configure -a # Paket-Cache neu aufbauen sudo apt clean sudo apt update # Held-Status (Updates blockiert) apt-mark showhold sudo apt-mark unhold paketname ===== Performance-Vergleich ===== # Startzeit messen time firefox --version # deb time snap run firefox --version # snap # Speichernutzung ps aux | grep firefox # Plattenbelegung du -sh /usr/lib/firefox # deb du -sh /snap/firefox # snap ===== Best Practices ===== * **System-Tools**: Immer als deb installieren * **Desktop-Apps**: Snap wenn verfügbar und aktuell * **Server**: Nur deb, kein Snap * **Updates**: deb manuell, Snap automatisch * **Speicher**: Alte Snap-Revisionen regelmäßig löschen * **Sicherheit**: Snap für unbekannte Software * **Performance**: deb für performance-kritische Apps ===== Siehe auch ===== * [[sammlung:paketmanagement|Paketverwaltung mit APT]] * [[sammlung:systemd|SystemD Services]] * [[sammlung:wichtige_konfigurationsdateien|System-Konfiguration]] {{tag>linux ubuntu paketmanagement snap deb apt dpkg}}