linux-suse-opensuse package-management repositories obs sles opensuse

Advanced Repo Management & OBS (Artikel 129)

Strategische Verwaltung von Software-Quellen. Erfahren Sie den Umgang mit dem Open Build Service (OBS), Drittanbieter-Repos wie Packman und dem Aufbau eigener Firmen-Repositories.

# SUSE Repository Strategy: OBS und eigene Software-Quellen

TL;DR / Management Summary In der SUSE-Welt ist das Repository-Management durch zwei Konzepte geprägt: Den Open Build Service (OBS) und die strikte Vendor Stickiness (Anbietertreue). Ein Senior Admin muss wissen, wie er Software aus dem riesigen OBS-Ökosystem sicher einbindet, Drittanbieter-Repos wie Packman gewichtet und wie man für die eigene Firma ein lokales RPM-Repository aufbaut, um interne Tools konsistent zu verteilen.


# 1. Einführung & Architektur

OBS: Das Herz der Software-Erstellung.

SUSE nutzt den Open Build Service (OBS). Dies ist nicht nur ein Repository, sondern ein System, das RPMs für dutzende Distributionen automatisch baut.

# Die Repository-Hierarchie (Mermaid)

graph TD
    A[Official Repos: SLES / Leap] -->|Highest Trust| B[Production Server]
    C[OBS Repos: Home / Projects] -->|Medium Trust| B
    D[External Repos: Packman / Nvidia] -->|Low Trust| B
    E[Internal Company Repo] -->|Custom Software| B
    subgraph "Logic"
        F[Vendor Stickiness]
        G[Priority 0-200]
    end

# 2. Drittanbieter-Repos einbinden

Der Fall Packman.

Das bekannteste Repo für openSUSE ist Packman (enthält Codecs und Multimedia-Tools, die SUSE aus lizenzrechtlichen Gründen nicht mitliefert).

# Einbinden via CLI

sudo zypper ar -cfp 90 http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_15.5/ packman
  • -c: Check connection.
  • -f: Auto-Refresh aktivieren.
  • -p 90: Höhere Priorität als Standard (99).

# 3. OBS (Open Build Service) nutzen

Maßgeschneiderte Software.

Wenn ein Paket in SUSE fehlt, suchen Sie auf software.opensuse.org.

# Das Risiko der ‘Home’ Repositories

Jeder User kann in seinem home:user Repo Pakete bauen.

Sicherheit: Nutzen Sie in der Produktion niemals home: Repositories! Suchen Sie nach Paketen in offiziellen Development-Projekten (z.B. devel:languages:python).


# 4. Day-2 Operations: Eigene Repositories erstellen

Interne Tools verteilen.

Sie haben eigene RPMs oder Skripte? Bauen Sie ein lokales Repo.

# Schritt 1: Verzeichnis vorbereiten

mkdir -p /srv/repo/company-tools
cp my-internal-app.rpm /srv/repo/company-tools/

# Schritt 2: Metadaten generieren

sudo zypper install createrepo
createrepo /srv/repo/company-tools/

# Schritt 3: Client anbinden

sudo zypper ar file:///srv/repo/company-tools/ company-internal

# 5. Troubleshooting & “War Stories”

Wenn der Vendor-Check blockiert.

# Story 1: “Das Update-Loch”

Symptom: zypper up zeigt an, dass 50 Pakete “nicht aktualisiert werden”. Ursache: Diese Pakete liegen in einer neueren Version in einem anderen Repo (z.B. OBS) bereit, aber der Vendor unterscheidet sich. Zypper weigert sich, den Anbieter zu wechseln. Lösung: Nutzen Sie zypper dup --from <alias> oder setzen Sie die Priorität des OBS-Repos höher und erlauben Sie den Wechsel einmalig mit zypper up --allow-vendor-change.

# Story 2: “Corrupt Repo Metadata”

Symptom: zypper ref bricht mit Prüfsummen-Fehlern ab. Ursache: Der Mirror-Server ist gerade im Sync oder die lokalen Metadaten sind veraltet. Lösung: sudo zypper clean -a gefolgt von sudo zypper ref -f erzwingt einen vollständigen Neu-Download aller Indizes.


# 6. Fazit & Empfehlung

  • Priorisierung: Geben Sie offiziellen Update-Quellen immer eine höhere Priorität (niedrigere Zahl).
  • Staging: Spiegeln Sie externe Repositories auf einen internen RMT (Artikel 126), bevor Sie sie auf Produktions-Servern freigeben.
  • Wartung: Entfernen Sie ungenutzte Repositories konsequent (zypper rr <alias>). Jede Quelle verlangsamt den Solver.

# Anhang: Cheatsheet

Aufgabe Befehl
Repo hinzufügen zypper ar <url> <alias>
Repo entfernen zypper rr <alias>
Repo deaktivieren zypper mr -d <alias>
Priorität setzen zypper mr -p <number> <alias>
GPG Keys listen rpm -q gpg-pubkey
Mirror-Check zypper lr -u
Cache leeren zypper clean -a