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 |