5.6. Lokale Repository-Server#

Ein lokales Repository spiegelt Pakete von Update-Servern von Univention zu Ihrer Infrastruktur. Dies gibt Ihnen Kontrolle über Updates, reduziert die Bandbreitennutzung und ermöglicht Offline-Operationen in Ihrer Umgebung.

Verwenden Sie einen lokalen Repository-Server, wenn Sie mehrere Nubus für UCS Systeme verwalten, besonders über verteilte Standorte oder mit eingeschränkter Internetkonnektivität. Für Installation mit nur einem System oder Umgebungen mit zuverlässiger, breitbandiger Internetverbindung verwenden Sie Online-Repositories direkt.

Nach der Einrichtung eines lokalen Repositories installieren und verwalten Sie Pakete daraus. Informationen zu Paketinstallationsmethoden finden Sie unter Paket-Installation und -Verwaltung.

Dieser Abschnitt behandelt das Erstellen, Konfigurieren und Warten von lokalen Repositories.

Vorteile eines lokalen Repositories
  • Reduzierte Bandbreitenauslastung: Updates einmal von Upstream-Servern Univention herunterladen und dann lokal auf alle Systeme verteilen, wodurch der Internet-Bandbreitenverbrauch in Umgebungen mit vielen Systemen erheblich reduziert wird.

  • Offline-Updates: Systeme ohne Internetverbindung aktualisieren. Dies ist für isolierte Netzwerke oder Standorte mit unzuverlässiger Konnektivität nützlich.

  • Schnellere Bereitstellungen: Lokale Paketverteilung ist schneller als das Herunterladen von Remote-Servern, besonders in geografisch verteilten Umgebungen oder über langsame Netzwerkverbindungen.

  • Update-Kontrolle: Verwalten Sie eine lokale Kopie von Paketen und kontrollieren Sie, welche Versionen verfügbar sind und wann Systeme Zugriff haben.

Überlegungen zur Wartung eines lokalen Repositories
  • Synchronisationsaufwand: Sie müssen das lokale Repository regelmäßig mit Upstream-Servern von Univention synchronisieren, um mit Sicherheitsaktualisierungen auf dem neuesten Stand zu bleiben.

  • Administrativer Aufwand: Sie müssen die Gesundheit des Repositorys überwachen und die Synchronisation verwalten.

Entscheidung, ob ein lokales Repository verwendet werden soll

Verwenden Sie einen lokalen Repository-Server, wenn Sie mehrere Nubus für UCS Systeme verwalten, besonders über verteilte Standorte oder mit eingeschränkter Internetkonnektivität. Für Installation mit nur einem System oder Umgebungen mit zuverlässiger, breitbandiger Internetverbindung verwenden Sie Online-Repositories direkt.

Nubus für UCS generiert automatisch APT-Paketquellen im Verzeichnis /etc/apt/sources.list.d/ basierend auf Einstellungen für Release, Errata-Updates und Zusatzkomponenten. Falls Sie zusätzliche Repositories auf einem System benötigen, können Sie diese in der Datei /etc/apt/sources.list eingeben.

Standardmäßig verwenden neue Installationen das Repository von Univention unter https://updates.software-univention.de.

Paketstatus des Repositorys

Univention klassifiziert Pakete in seinem Repository als entweder maintained oder unmaintained. Alle Pakete im Standard-Paketumfang befinden sich im Status maintained. Univention stellt Sicherheitsupdates nur für maintained Pakete zeitnah bereit. Sie können die Liste der maintained Pakete auf einem Nubus für UCS System unter /usr/share/univention-errata-level/maintained-packages.txt ansehen.

Univention stellt keine Sicherheitsupdates oder andere Wartung für unmaintained Pakete bereit. Um zu überprüfen, ob Ihr System unmaintained Pakete installiert hat, führen Sie den Befehl univention-list-installed-unmaintained-packages aus.

Repository-Komponenten

Konfigurieren Sie die UCR-Variable repository/online/component/COMPONENTNAME, um zu verwalten, welche Repository-Komponenten Ihr System verwendet, wobei COMPONENTNAME der Name der Komponente ist. Setzen Sie die Variable auf no, um eine Komponente von der Synchronisation auszuschließen, oder lassen Sie sie nicht gesetzt, um das Standardverhalten zu verwenden.

5.6.1. Erstellen und Aktualisieren eines lokalen Repositories#

Dieser Abschnitt beschreibt, wie Sie ein synchronisiertes lokales Repository mit Upstream-Servern von Univention erstellen und warten.

Voraussetzungen

Um ein lokales Repository zu erstellen, benötigen Sie Anmeldedaten für den Root-Benutzer zum Ausführen der Befehle für das Repository in einem Terminal.

Optional: Erforderlichen Speicherplatz schätzen
Erläuterung und Befehle

Bevor Sie das Repository initialisieren, können Sie schätzen, wie viel Speicherplatz Sie benötigen. Der erforderliche Speicherplatz hängt davon ab, welche Nubus für UCS-Versionen Sie spiegeln.

Führen Sie den Befehl in Listing 5.6 auf Ihrem Nubus für UCS-System aus, um die geschätzte Größe zu berechnen. Der Befehl liest die aktuelle Nubus für UCS-Version aus den UCR-Variablen, ruft die Liste der verfügbaren Patch-Level-Versionen aus den Metadaten der Upstream-Versionen ab und summiert die Paketgrößen aus dem Index der jeweiligen Versionen.

Listing 5.6 Gesamtgröße des Repositorys schätzen#
$ eval "$(ucr shell version/version version/patchlevel)"
$ cat << EOT > /tmp/get_suites.py
import json, sys
major, minor = map(int, '${version_version}'.split('.'))
r = json.load(sys.stdin)
for m in r['releases']:
  for n in m['minors']:
    for p in n['patchlevels']:
      if m['major'] == major and n['minor'] == minor:
        v = f'{m["major"]}{n["minor"]}{p["patchlevel"]}'
        print(f'ucs{v} errata{v}', end=' ')
EOT
$ SUITES=$(curl -sf \
    https://updates.software-univention.de/ucs-releases.json \
    | python3 /tmp/get_suites.py)
$ BASE=https://updates.software-univention.de/dists
$ for suite in $SUITES; do \
    curl -sf "$BASE/$suite/main/binary-amd64/Packages.xz"; \
  done | xzcat \
    | awk '/^Size:/{sum+=$2} END{printf "%.1f GB\n", sum/1073741824}'
$ rm /tmp/get_suites.py

Bemerkung

Das Ergebnis ist eine Obergrenze. apt-mirror speichert Pakete in einem gemeinsamen Pool, sodass Pakete, die in mehreren Versionen vorkommen, nur einmal auf dem Datenträger gespeichert werden. Der tatsächliche Speicherverbrauch ist daher etwas geringer als die Schätzung.

Die Schätzung umfasst keine Quellpakete. Wenn Sie repository/mirror/sources auf yes setzen, planen Sie zusätzlichen Speicherplatz für diese ein.

Wichtig

Während der Synchronisation benötigt apt-mirror zusätzlich zur endgültigen Größe des Repositorys temporären Speicherplatz. Stellen Sie sicher, dass mindestens das Doppelte der geschätzten Größe an freiem Speicherplatz verfügbar ist, bevor Sie beginnen.

Das Repository initialisieren

Der Befehl univention-repository-create initialisiert ein lokales Repository und startet die Synchronisation mit Upstream-Servern von Univention. Der Befehl installiert das Paket univention-debmirror, falls das System es nicht bereits hat. Die Synchronisationszeit hängt von Ihrer Verbindungsbandbreite und der Größe des Repositorys ab. Der Befehl aktiviert auch das lokale Repository, indem die UCR-Variable local/repository auf yes gesetzt wird.

Um das Repository zu initialisieren, führen Sie den Befehl aus Listing 5.7 in einem Terminal aus. Der Befehl erfordert Ihre Bestätigung zum Fortfahren. Nach der Bestätigung beginnt die Synchronisation automatisch. Der Befehl speichert das Repository standardmäßig im Verzeichnis /var/lib/univention-repository/mirror/.

Nach Abschluss der Initialisierung zeigt der Befehl Anweisungen zum Konfigurieren anderer Systeme. Befolgen Sie diese Anweisungen, um sie für die Verwendung dieses Repositories zu konfigurieren.

Listing 5.7 Erstellen Sie ein lokales Repository#
$ univention-repository-create

Tipp

Überwachen Sie den Synchronisationsfortschritt in der Protokolldatei des Repositorys: /var/log/univention/repository.log

Synchronisieren Sie das Repository regelmäßig

Nach der anfänglichen Erstellung des Repositorys verwenden Sie den Befehl univention-repository-update, um das Repository mit Upstream-Servern von Univention synchron zu halten, wie in Listing 5.8 gezeigt. Nachfolgende Synchronisationsläufe laden nur geänderte Pakete herunter, daher sind sie schneller als die anfängliche Erstellung.

Listing 5.8 Aktualisieren Sie ein lokales Repository#
$ univention-repository-update net
Synchronisieren Sie Repositories an verschiedenen Standorten

Sie können auch lokale Repositories an mehreren Standorten synchronisieren. Unterhalten Sie beispielsweise ein Haupt-Repository in der Zentrale und synchronisieren Sie es mit lokalen Repositories an einzelnen Standorten.

Verwenden Sie ein Haupt-Repository für mehrere Standorte

Wenn Sie Nubus für UCS Systeme an mehreren Standorten verwalten, können Sie ein zentralisiertes Haupt-Repository verwenden, anstatt dass jeder Standort sein eigenes Repository wartet.

Richten Sie in diesem Szenario ein Haupt-Repository in der Zentrale Ihrer Organisation ein, das mit Upstream-Servern von Univention synchronisiert. Konfigurieren Sie an jedem externen Standort die Systeme, um das Haupt-Repository als Repository-Server zu verwenden, anstatt direkt von Upstream zu synchronisieren.

Konfigurieren Sie externe Standorte, um das Haupt-Repository zu verwenden, indem Sie die UCR-Variable repository/mirror/server auf den FQDN des Haupt-Repositories auf diesen Systemen setzen. Die Systeme führen immer noch univention-repository-update net aus, um lokal zu synchronisieren, aber sie laden Pakete von Ihrem Haupt-Repository statt von Upstream herunter.

Fehlerbehandlung

Falls die Befehle fehlschlagen, überprüfen Sie die folgenden Fehlercodes:

Exit code 0:

Befehl erfolgreich abgeschlossen.

Exit code 1:

Ein Konfigurationsfehler ist aufgetreten, oder der Benutzer hat die Operation abgebrochen.

Exit code 5:

Ein anderer Updater-Prozess wird bereits ausgeführt; warten Sie auf Abschluss und wiederholen Sie den Vorgang.

Für detaillierte Fehlermeldungen überprüfen Sie die Protokolldatei des Repositorys: /var/log/univention/repository.log

5.6.2. Konfigurieren Sie den Repository-Server#

Nach der Erstellung eines lokalen Repositories müssen Sie Ihre Systeme für die Verwendung konfigurieren. Dieser Abschnitt zeigt Ihnen drei Möglichkeiten: über das Verwaltungsmodul für einzelne Systeme, über die Univention Configuration Registry für Konfiguration über die Befehlszeile und über LDAP-Richtlinien, wenn Sie mehrere Systeme zentral verwalten.

Der Standardwert für die Repository-Server URL ist https://updates.software-univention.de.

Konfiguration über das Verwaltungsmodul

Im Verwaltungsmodul Repository-Einstellungen geben Sie die Repository-Server URL an. Sie finden das Modul unter Software ‣ Repository-Einstellungen. Verwenden Sie diesen Ansatz für die Konfiguration einzelner Systeme über die grafische Oberfläche.

Konfiguration über die Univention Configuration Registry

Sie können die Repository-Server URL in der UCR-Variable repository/online/server angeben. Verwenden Sie diesen Ansatz für die Konfiguration einzelner Systeme über die Befehlszeile.

Richtlinienbasierte Konfiguration des Repository-Servers

Sie können den Repository-Server auch mithilfe der Richtlinie Repository-Server im Rechner Modul angeben. Das Auswahlfeld zeigt nur Nubus für UCS Systeme mit einem konfigurierten DNS-Eintrag an. Verwenden Sie diesen Ansatz, um mehrere Systeme in größeren Umgebungen zentral zu konfigurieren.

Alle Konfigurationsmethoden – das Verwaltungsmodul, die Univention Configuration Registry und die richtlinienbasierte Konfiguration – ändern dieselben Systemdateien:

  • /etc/apt/sources.list.d/15_ucs-online-version.list

  • /etc/apt/sources.list.d/20_ucs-online-component.list

Überprüfen Sie, ob die Repository-Server URL in diesen Dateien dem Wert in der UCR-Variable repository/online/server entspricht, um zu bestätigen, dass Ihre Konfiguration korrekt ist. Die Datei 20_ucs-online-component.list enthält nur Einträge für Repositories, wenn Sie Komponenten konfigurieren.

Listing 5.9 zeigt, wie die Repository-Server URL in der Datei aussieht.

Listing 5.9 Repository-Server URL in sources.list.d Datei (Auszug)#
deb https://updates.software-univention.de/ ucs520 main

5.6.3. Wartung des lokalen Repositories#

Regelmäßige Wartung gewährleistet optimale Leistung und verwaltet den Speicherplatz effizient.

Planen Sie die Synchronisation

Führen Sie die Synchronisation des Repositorys wöchentlich am Mittwochabend oder Donnerstagmorgen aus, um auf dem aktuellen Stand mit den wöchentlichen Updates der Pakete zu bleiben.

Konfigurieren Sie die Synchronisationsaufgabe mit dem Befehl univention-repository-update net über die Univention Configuration Registry oder eine LDAP-basierte Planungsrichtlinie. Listing 5.10 zeigt ein Beispiel mit UCR-Variablen. Das Zeitformat ist hour minute day month weekday. Dieses Beispiel synchronisiert das Repository jeden Mittwoch um 22:00 in Ihrer lokalen Zeitzone. Passen Sie den Zeitplan an Ihre organisatorischen Anforderungen und Muster des Netzwerkverkehrs an.

Listing 5.10 Konfigurieren Sie die wöchentliche Synchronisation des Repositorys über UCR#
$ univention-config-registry set \
   cron/repository-sync/command='/usr/sbin/univention-repository-update net' \
   cron/repository-sync/time='22 * * * 3'
Überwachen Sie die Gesundheit des Repositorys

Nach jeder Synchronisation überprüfen Sie, ob sie erfolgreich abgeschlossen wurde.

Überprüfen Sie den Exit Code des Synchronisationsbefehls – Exit Code 0 zeigt Erfolg an. Überprüfen Sie die Protokolldatei des Repositorys auf Fehlermeldungen oder Warnungen. Falls Fehler auftreten, lesen Sie den Abschnitt Fehlerbehebung bei Problemen mit dem Repository zur Diagnose und Fehlerbehebung.

Überprüfen Sie die Festplattennutzung, um ausreichend Platz für zukünftige Synchronisationen zu gewährleisten.

Verwalten Sie den Speicherplatz

Die Festplattennutzung wächst im Laufe der Zeit, wenn Upstream Paketversionen hinzufügt. Regelmäßige Bereinigung verhindert Speicherplatzerschöpfung.

  • Beschränken Sie den Versionsbereich mit den UCR-Variablen repository/mirror/version/start und repository/mirror/version/end. Das System synchronisiert nur Versionen innerhalb dieses Bereichs.

  • Schließen Sie optionale Komponenten aus, indem Sie die UCR-Variable repository/online/component/COMPONENTNAME auf no setzen, wobei COMPONENTNAME der Name der Komponente ist, die Sie deaktivieren möchten. Das System schließt diese Komponente von der nächsten Synchronisation aus.

  • Schließen Sie Quellpakete mit der UCR-Variable repository/mirror/sources aus, falls Sie diese nicht benötigen, da Quellpakete die Größe des Repositorys erheblich erhöhen.

  • Löschen Sie alte Kernel-Pakete mit dem Befehl univention-prune-kernels, um veraltete Kernel-Pakete zu entfernen und Speicherplatz freizugeben.

Überprüfen und planen

Überprüfen Sie vierteljährlich Ihre Konfiguration für das Repository und Wachstumsmuster, um Speicherbedarf vorherzusehen.

Überwachen Sie Trends der Repository-Größen. Wenn das Wachstum sich Ihrer Festplattenkapazität nähert, erwägen Sie, den Speicher zu erweitern oder Ihre Richtlinie für die Aufbewahrung der Versionen anzupassen.

Überprüfen Sie, dass Ihre Aufbewahrungsstrategie für die Versionen Ihrem UCS Support Lebenszyklus entspricht. Univention stellt Sicherheitsaktualisierungen für maintained Versionen bereit. Entfernen Sie Versionen, die nicht mehr in Ihrem Support-Umfang liegen.

Planen Sie Major UCS Releases im Voraus ihrer Veröffentlichung. Stellen Sie sicher, dass ausreichend Speicherplatz vorhanden ist, bevor die Synchronisation für das Release beginnt.

5.6.4. Fehlerbehebung bei Problemen mit dem Repository#

Wenn Sie beim Erstellen oder Aktualisieren eines lokalen Repositories auf Probleme stoßen, verwenden Sie die folgende Anleitung zur Diagnose und Behebung häufiger Probleme.

Überprüfen Sie die Protokolldatei des Repositorys /var/log/univention/repository.log auf detaillierte Fehlermeldungen und Diagnoseinformationen.

Erstellung des Repositorys oder Aktualisierung kann nicht gestartet werden

Der Befehl gibt den Exit Code 5 zurück, da ein anderer Updater-Prozess ausgeführt wird.

Überprüfen Sie, ob ein anderer univention-repository-create, univention-repository-update oder Prozess zur System-Aktualisierung auf dem System aktiv ist. Warten Sie, bis der andere Prozess abgeschlossen ist, bevor Sie Ihren Befehl wiederholen.

Konfiguration kann nicht angewendet werden oder erscheint falsch

Der Befehl endet mit Exit Code 1, oder das System verwendet nicht den konfigurierten Repository-Server.

Bestätigen Sie, dass Sie die folgenden Univention Configuration Registry Variablen korrekt gesetzt haben:

Nachdem Sie eine Konfiguration korrigiert haben, überprüfen Sie die Dateien, um zu bestätigen, dass die Änderungen wirksam wurden: /etc/apt/sources.list.d/15_ucs-online-version.list und /etc/apt/sources.list.d/20_ucs-online-component.list.

Mirror-Server zeigt auf sich selbst

Der Befehl schlägt mit dem Exit Code 1 fehl, wenn Sie den Mirror-Server konfigurieren, um auf das lokale System statt auf einen Upstream Repository-Server zu zeigen.

Überprüfen Sie, dass die UCR-Variable repository/mirror/server nicht den FQDN Ihres lokalen Systems enthält. Sie muss auf einen gültigen Upstream Repository-Server wie https://updates.software-univention.de zeigen.

Synchronisation ist langsam oder bleibt stecken

Die anfängliche Synchronisation des Repositorys lädt alle Pakete herunter und kann je nach Netzwerkbandbreite und Größe des Repositorys mehrere Stunden dauern.

Falls die Synchronisation zu stecken scheint, überprüfen Sie die Netzwerkverbindung zum Repository-Server und stellen Sie sicher, dass Sie ausreichend Speicherplatz auf Ihrem System haben.

Repository-Server ist nicht erreichbar

Ihr System kann keine Verbindung zum konfigurierten Repository-Server herstellen. Überprüfen Sie Folgendes:

  • Netzwerkverbindung von Ihrem System zum Repository-Server ist vorhanden.

  • DNS-Auflösung funktioniert für den Repository-Server Rechnernamen.

  • Die Repository-Server URL in der UCR-Variable repository/online/server ist korrekt.

  • Firewall-Regeln ermöglichen Zugriff auf den Repository-Server.

Unzureichender Speicherplatz

Der Speicherplatz auf dem System läuft während der Synchronisation voll.

Überprüfen Sie, dass Sie ausreichend Speicherplatz in dem Verzeichnis verfügbar haben, das Sie in der UCR-Variable repository/mirror/basepath konfiguriert haben. Der Standardpfad ist /var/lib/univention-repository/.

Der benötigte Speicherplatz hängt davon ab, welche UCS-Versionen und Komponenten Sie spiegeln möchten.

Nicht mit ausreichenden Berechtigungen ausgeführt

Der Befehl schlägt fehl, wenn Sie ihn nicht mit Root Privilegien ausführen. Führen Sie alle Verwaltungsbefehle für das Repository als root Benutzer aus.