linux-suse-opensuse package-management zypper sles opensuse advanced

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:

  1. Software: Einzelne RPM-Pakete.
  2. Patches: Eine Sammlung von Paketen, die einen spezifischen Fehler/CVE beheben.
  3. 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