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