Zypper: Modern Package Management (Artikel 127)
Beherrschung des Zypper-Paketmanagers unter SUSE. Erfahren Sie alles über Paket-Installation, Patch-Management, Repository-Prioritäten und die mächtige Suchfunktion.
# Zypper Deep Dive: Effizientes Paket-Management unter SUSE
TL;DR / Management Summary Zypper ist der native Paketmanager von SUSE und gilt als einer der mächtigsten der Linux-Welt. Sein größter Vorteil gegenüber APT oder DNF ist das präzise Handling von Patches (Sicherheits-Fixes) vs. Updates (Versions-Sprünge). Zudem nutzt Zypper die extrem schnelle
libsolv-Bibliothek zur Auflösung von Abhängigkeiten. Wer Zypper beherrscht, kann Systeme gezielt gegen Sicherheitslücken härten, ohne unnötige Funktions-Updates einzuspielen.
# 1. Einführung & Architektur
Die Schichten von Zypper.
Zypper arbeitet auf drei Ebenen:
- Software: Einzelne RPM-Pakete.
- Patches: Eine Sammlung von Paketen, die einen spezifischen Fehler/CVE beheben.
- Patterns: Eine logische Gruppe von Paketen (z.B. “Web Server” oder “Base System”).
# Der Zypper Workflow (Mermaid)
graph TD
A[Admin: zypper command] --> B[Solver: libsolv]
B --> C[RPM Database /usr/lib/sysimage/rpm]
B --> D[Cache /var/cache/zypp]
B --> E[Repos SCC / OBS / Packman]
E -->|Metadata| D
B -->|Transaction| F[Install / Update Files]
# 2. Der wichtigste Unterschied: up vs. patch
Strategisches Patching.
In Enterprise-Umgebungen (SLES) wollen wir oft nur Sicherheit fixen, aber keine Applikations-Features ändern.
# zypper patch (Sicherheit zuerst)
Installiert nur Patches, die von SUSE als Security- oder Bugfix-Relevant markiert wurden.
sudo zypper patch
# zypper update (up)
Aktualisiert alle installierten Pakete auf die neueste verfügbare Version im Repository.
sudo zypper up
Wichtig: In openSUSE Tumbleweed (Rolling Release) nutzen wir weder up noch patch, sondern ausschließlich zypper dup (Artikel 123).
# 3. Repository Management
Den Überblick behalten.
# Quellen auflisten
# Zeigt Alias, Name, Enabled-Status und Refresh-Status
zypper lr -u
# Repository Prioritäten
Wenn zwei Repositories das gleiche Paket anbieten, entscheidet die Priorität (niedriger Wert = höhere Priorität).
# Setze Prio von 'repo-update' auf 90 (höher als Default 99)
sudo zypper mr -p 90 repo-update
# 4. Fortgeschrittene Suche und Info
Was ist wirklich installiert?
# Suche nach Inhalten
# Welches Paket liefert die Datei /usr/bin/vim?
zypper search --provides /usr/bin/vim
# Suche nach installierten Paketen aus einem bestimmten Repo
zypper pa --inst-only --repo <alias>
# Was-wäre-wenn (Dry-Run)
sudo zypper install --dry-run nginx
# 5. Troubleshooting & “War Stories”
Wenn die Abhängigkeiten streiken.
# Story 1: “Der Vendor-Change-Fehler”
Symptom: zypper up weigert sich, ein Paket zu aktualisieren, obwohl eine neuere Version verfügbar ist (z.B. im Packman-Repo).
Ursache: Zypper wechselt standardmäßig niemals den Lieferanten (Vendor Sticky Policy) eines Pakets aus Sicherheitsgründen.
Lösung: Erlauben Sie den Wechsel explizit:
sudo zypper up --allow-vendor-change oder nutzen Sie zypper dup.
# Story 2: “Corrupt ZYPP Database”
Symptom: Zypper meldet Segmentierungsfehler oder falsche Paketgrößen.
Ursache: Ein harter Abbruch hat die Cache-Datenbank unter /var/cache/zypp/ beschädigt.
Lösung: Cache komplett löschen und neu aufbauen:
sudo zypper clean -a
sudo zypper ref
# 6. Fazit & Empfehlung
- Automation: Zypper ist perfekt für Skripte geeignet (
--non-interactive). - Security: Nutzen Sie im RZ primär
zypper patch. Es ist der sicherste Weg zur Compliance. - Historie: Schauen Sie bei Fehlern in
/var/log/zypper.log, hier wird jeder Solver-Schritt geloggt.
# Anhang: Cheatsheet
| Aufgabe | Befehl |
|---|---|
| Paket installieren | zypper in <name> |
| Paket entfernen | zypper rm <name> |
| Repo hinzufügen | zypper ar <url> <alias> |
| GPG Keys listen | rpm -q gpg-pubkey |
| Verwaiste Pakete | zypper pa --unneeded |
| Lock setzen | zypper al <name> (Verhindert Update) |
| Locks anzeigen | zypper ll |