Creación de un Espejo de Repositorio DNF

Rowan Puttergill, Equipo de Documentación de Fedora Versión F42 and newer Last review: 2026-05-10
Un local DNF espejo de repositorio deja sirves actualizaciones de paquete de la Fedora de vuestra infraestructura propia. Esto es útil para las organizaciones que dirigen sistemas de Fedora del múltiplo, restringidos o metered entornos de red, o probando actualizaciones en un sistema de escenificar antes de rodarles fuera a producción.

Pre-requisitos

Espacio del disco

Utilice dnf repoinfo para comprobar el tamaño de cada repositorio que planeas para espejo:

$ dnf repoinfo fedora updates

Los campos Repodate Info: Size en la salida muestran el tamaño del paquete total para cada repositorio. Ejecute el mismo comando para cualesquiera repositorios adicionales desee espejar, utilizando dnf repolist para ver los ID de repositorio disponible.

Repository size grows throughout a release lifecycle as updates accumulate. The updates repository in particular grows steadily from release day until end-of-life. Budget additional headroom beyond the initial estimate. Repositories can grow by up to 30% or more over the lifecycle of a release, so plan accordingly.

Instalación de dnf5-plugins

El dnf reposync la orden proviene el dnf5-plugins paquete:

$ sudo dnf install dnf5-plugins

Un servidor de HTTP

Un servidor de web está requerido para servir el contenido de espejo para otros sistemas. Esta guía utiliza el httpd de Apache, pero nginx funciona igualmente bien.

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

Sincronizar el repositorio

Uso dnf reposync para descargar contenido de repositorio a un directorio local. El ejemplo siguiente sincroniza fedora y updates actualiza repositorios:

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

Para limitar la sincronización para unas arquitecturas concretas y evitar descargando paquetes no necesitados:

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

Para desinstalar paquetes desde el espejo local que es estén ya presentes en el repositorio remoto:

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

El contenido sincronizado ahora es accesible en http://localhost/mirror/, o sea cual sea el nombre de host o la dirección IP de su servidor.

El primer sync descarga el repositorio completo y puede tomar un tiempo largo dependiendo de su conexión. Más tarde syncs solo descarga paquetes nuevos o modificados.

Configurar sistemas de cliente

En cada sistema que tendría que utilizar el espejo local, crear un archivo .repo en /etc/yum.repos.d/. Por ejemplo, /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

Reemplaza mirror-server con el nombre‐host o dirección de IP de su servidor de espejo.

Para asegurar los clientes utilizan sólo el espejo local, inhabilita los repositorios Fedora por defecto mediante ajuste enabled=0 en /etc/yum.repos.d/fedora.repo y /etc/yum.repos.d/fedora-updates.repo.

Verificación de GPG

dnf reposync Descarga repositorio metadata y los paquetes que incluyen sus firmas. Los clientes utilizan las claves GPG de Fedora ya presentes en /etc/pki/rpm-gpg/ para verificar paquetes, por tanto no se requiere ninguna configuración de clave adicional.

Mantener el espejo actual

Configura el servicio y cronómetro de systemd para sincronizar el espejo automáticamente.

Crea un archivo de servicio como /etc/systemd/system/dnf-mirror.service:

[Unit]
Description=Sincronizar repositorio DNF espejo

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

Crear el cronómetro en /etc/systemd/system/dnf-mirror.timer:

[Unit]
Descripción=Diariamente sincroniza espejo del repositorio DNF

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

Habilita e inicia el cronómetro:

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

Verifique que el cronómetro esté activo:

$ systemctl status dnf-mirror.timer