Einen Paketquellen-Spiegelserver für DNF erstellen
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.
|
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
Want to help? Learn how to contribute to Fedora Docs ›