Einen Paketquellen-Spiegelserver für DNF erstellen

Rowan Puttergill, Fedora Dokumentationsteam Version F42 and newer Last review: 2026-05-10
Ein lokaler DNF-Paketquellen-Spiegelserver ermöglicht es Ihnen, Fedora-Paketaktualisierungen über Ihre eigene Infrastruktur bereitzustellen. Dies ist nützlich für Organisationen, die mehrere Fedora-Systeme verwalten, für Umgebungen mit eingeschränktem oder getaktetem Netzwerkzugang sowie für das Testen von Aktualisierungen auf einem Staging-System, bevor diese in die Produktionsumgebung ausgerollt werden.

Voraussetzungen

Plattenplatz

Mit dnf repoinfo können Sie die Größe jeder Paketquelle zu überprüfen, die Sie spiegeln möchten:

$ dnf repoinfo fedora updates

Die Felder Repodate Info: Size in der Ausgabe zeigen die Gesamtgröße der Pakete für jede Paketquelle an. Führen Sie denselben Befehl für alle weiteren Paketquellen aus, die Sie spiegeln möchten; verwenden Sie dabei dnf repolist, um die verfügbaren Paketquellen-IDs anzuzeigen.

Die Größe einer Paketquelle nimmt im Verlauf des Lebenszyklus einer Distributionsveröffentlichung zu, da sich Aktualisierungen ansammeln. Insbesondere die updates-Paketquelle wächst vom Tag der Veröffentlichung bis zum Ende des Lebenszyklus stetig an. Rechnen Sie einen zusätzlichen Puffer über die ursprüngliche Schätzung hinaus ein. Paketquellen können im Laufe des Lebenszyklus der Distributionsveröffentlichung um bis zu 30 % oder mehr anwachsen; planen Sie dies daher entsprechend ein.

Installation von dnf5-plugins

Der Befehl dnf reposync stammt aus dem Paket dnf5-plugins:

$ sudo dnf install dnf5-plugins

Ein HTTP-Server

Ein Webserver ist erforderlich, um die gespiegelten Inhalte an andere Systeme auszuliefern. Dieser Leitfaden verwendet Apache httpd, doch nginx funktioniert ebenso gut.

$ sudo dnf install httpd
$ sudo systemctl enable --now httpd

Synchronisieren der Paketquelle

Verwenden Sie dnf reposync, um Paketquellen-Inhalte in ein lokales Verzeichnis herunterzuladen. Das folgende Beispiel synchronisiert die Paketquellen fedora und updates:

$ sudo dnf reposync --repo=fedora --repo=updates --download-path=/var/www/html/mirror

So können Sie die Synchronisation auf bestimmte Architekturen beschränken und das Herunterladen von Paketen vermeiden, die Sie nicht benötigen:

$ sudo dnf reposync --repo=fedora --repo=updates --download-path=/var/www/html/mirror --arch=x86_64 --arch=noarch

So können Sie Pakete vom lokalen Spiegelserver entfernen, die in der fernen Paketquelle nicht mehr vorhanden sind:

$ sudo dnf reposync --repo=fedora --repo=updates --download-path=/var/www/html/mirror --delete

Die synchronisierten Inhalte sind nun unter http://localhost/mirror/ zugänglich – oder unter dem Hostnamen bzw. der IP-Adresse Ihres Servers.

Die erste Synchronisierung lädt die gesamte Paketquelle herunter und kann – abhängig von Ihrer Verbindung – längere Zeit in Anspruch nehmen. Spätere Synchronisierungen laden lediglich neue oder geänderte Pakete herunter.

Konfiguration der Client-Systeme

Erstellen Sie auf jedem System, das den lokalen Spiegelserver nutzen soll, eine .repo-Datei unter /etc/yum.repos.d/. Zum Beispiel /etc/yum.repos.d/local-mirror.repo:

[local-fedora]
name=Local Fedora mirror
baseurl=http://mirror-server/mirror/fedora/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch

[local-updates]
name=Local Fedora updates mirror
baseurl=http://mirror-server/mirror/updates/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch

Ersetzen Sie mirror-server durch den Hostnamen oder die IP-Adresse Ihres Spiegelservers.

Um sicherzustellen, dass Clients ausschließlich den lokalen Spiegelserver nutzen, deaktivieren Sie die standardmäßigen Fedora-Paketquellen, indem Sie in /etc/yum.repos.d/fedora.repo und /etc/yum.repos.d/fedora-updates.repo enabled=0 setzen.

GPG-Verifizierung

dnf reposync lädt Paketquellen-Metadaten und Pakete – einschließlich ihrer Signaturen – herunter. Clients verwenden die Fedora-GPG-Schlüssel, die bereits unter /etc/pki/rpm-gpg/ vorhanden sind, um die Pakete zu verifizieren; daher ist keine zusätzliche Schlüsselkonfiguration erforderlich.

Den Spiegelserver aktuell halten

Richten Sie einen systemd-Dienst und einen Timer ein, um den Spiegelserver automatisch zu synchronisieren.

Erstellen Sie eine Dienste-Datei in /etc/systemd/system/dnf-mirror.service:

[Unit]
Description=Sync DNF repository mirror

[Service]
Type=oneshot
ExecStart=dnf reposync --repo=fedora --repo=updates --download-path=/var/www/html/mirror --delete

Erstellen Sie den Timer in /etc/systemd/system/dnf-mirror.timer:

[Unit]
Description=Daily DNF repository mirror sync

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

Aktivieren und starten Sie den Timer:

$ sudo systemctl enable --now dnf-mirror.timer

Prüfen Sie, ob der Timer aktiv ist:

$ systemctl status dnf-mirror.timer