LinuxParty
A veces puede ser práctico instalar tu propio repositorio para prevenir repentinas caidas del repositorio original. Este artículo demuestra cómo crear un espejo usando CentOS para tu red local. Si tienes que instalar múltiples sistemas simultáneamente en tu red local,
entonces todos los paquetes necesarios se pueden descargar sobre una conexión rápida tipo LAN, así ahorrarás tu ancho de banda
en Internet.
Aquí tienes una versión actualizada y ampliada del artículo —con correcciones, mejoras y enfoques modernos— sobre cómo crear un repositorio local tipo YUM/DNF para CentOS / Red Hat / Fedora:
Introducción
Tener un repositorio local puede ser muy útil en entornos de red local (por ejemplo en una oficina o aula de formación), ya que:
- Reduce el tráfico hacia repositorios remotos.
- Garantiza disponibilidad en caso de cortes de Internet o repositorios externos caídos.
- Permite tener control sobre versiones de paquetes disponibles.
- Facilita la instalación en múltiples máquinas de forma homogénea.
Aunque el artículo original se centraba en CentOS / Red Hat / Fedora con YUM, hoy en día muchas de estas distribuciones usan DNF como gestor de paquetes (Fedora, RHEL 8/9, CentOS Stream). Pero el concepto de repositorio RPM local sigue siendo válido.
A continuación, el procedimiento paso a paso, con adaptaciones modernas.
Requisitos previos
- Una máquina (servidor) con suficiente espacio de disco para almacenar los paquetes RPM que vayas a sincronizar o copiar.
- Servicio accesible desde la red interna (por ejemplo mediante HTTP, FTP o incluso NFS/SMB).
- Acceso root o privilegios suficientes para gestionar el repositorio y los paquetes.
- En los clientes, configuraciones para apuntar al repositorio local.
Pasos para crear el repositorio local
1. Preparar el directorio donde estará el repositorio
Por ejemplo, en el servidor:
sudo mkdir -p /srv/repos/centos8 # o “rhel9”, “fedora36”, etc. sudo chown -R root:root /srv/repos sudo chmod -R 755 /srv/repos
Puedes organizar subdirectorios por versión, arquitectura (x86_64, aarch64…), tipo (BaseOS, AppStream, Extras…).
2. Copiar o sincronizar paquetes
Tienes dos opciones principales:
Opción A: copiar un repositorio remoto
Usar rsync, reposync o herramientas similares para descargar paquetes del repositorio oficial.
Por ejemplo, en RHEL/CentOS/Fedora modernas:
sudo dnf install -y dnf-plugins-core # si no está instalado sudo reposync --repoid=BaseOS --download-path=/srv/repos/centos8/BaseOS sudo reposync --repoid=AppStream --download-path=/srv/repos/centos8/AppStream # etc.
reposync descargará los paquetes RPM del repositorio configurado localmente en /etc/yum.repos.d/.
Otra alternativa es rsync directamente desde mirrors oficiales (si permiten rsync). Por ejemplo:
rsync -av --delete rsync://mirror.centos.org/centos/8/BaseOS/x86_64/os/ /srv/repos/centos8/BaseOS/
Opción B: copiar manualmente tus propios RPMs
Si tienes paquetes propios (internos, builds personalizados, etc.), simplemente colócalos dentro del directorio del repositorio, en la estructura apropiada (por ejemplo, /srv/repos/centos8/custom/).
3. Crear los metadatos del repositorio
Una vez tengas los RPMs en los directorios adecuados, debes generar los metadatos que permiten que yum, dnf o zypper (cuando aplica) identifiquen los paquetes:
sudo dnf install -y createrepo # o createrepo_c (versión en C más rápida) # Por ejemplo: sudo createrepo_c /srv/repos/centos8/BaseOS sudo createrepo_c /srv/repos/centos8/AppStream
Si ya existía el repositorio antes y sólo estás actualizando, puedes usar:
sudo createrepo_c --update /srv/repos/centos8/BaseOS
Esto sólo re-indexa lo necesario sin rehacer todo de cero.
4. Exponer el repositorio vía HTTP (u otro protocolo)
Para que los clientes puedan acceder al repositorio, lo más habitual es servirlo vía HTTP.
Si usas Apache:
sudo yum install -y httpd # o en RHEL 8/9 / Fedora: sudo dnf install -y httpd # Crear configuración: cat <<EOF | sudo tee /etc/httpd/conf.d/repos.conf Alias /repos /srv/repos <Directory /srv/repos> Options Indexes Require all granted </Directory> EOF sudo systemctl enable --now httpd
Para Nginx sería similar:
server { listen 80; server_name repos.miempresa.local; location / { root /srv/repos; autoindex on; } }
Reinicia el servicio web. Ahora, desde un navegador puedes probar, por ejemplo:
http://mi-servidor/repos/centos8/BaseOS/
y debería listar los RPMs y archivos repodata/.
5. Crear el archivo .repo para clientes
En cada máquina cliente (o como plantilla de configuración) crea un archivo en /etc/yum.repos.d/ por ejemplo mi-repo-local.repo:
[mi-local-baseos] name=Repositorio local BaseOS CentOS 8 baseurl=http://mi-servidor/repos/centos8/BaseOS/ enabled=1 gpgcheck=0 [mi-local-appstream] name=Repositorio local AppStream CentOS 8 baseurl=http://mi-servidor/repos/centos8/AppStream/ enabled=1 gpgcheck=0
Si quieres firmar tus paquetes (recomendado en entornos corporativos), puedes:
- Crear un par de claves GPG.
- Firmar los RPMs (
rpm --addsigno herramientas relacionadas). - Colocar la clave pública en los clientes y activar
gpgcheck=1.
6. Actualizar el repositorio cuando cambien paquetes
Cada vez que añadas o elimines paquetes, ejecuta nuevamente createrepo_c --update en el directorio correspondiente.
Si usas reposync, puedes integrarlo dentro de un script cron que sincronice periódicamente del repositorio remoto y regenere los metadatos.
Particularidades modernas y recomendaciones
- En Fedora y versiones recientes de RHEL / CentOS, DNF es el gestor de paquetes por defecto. Aun así, los repositorios
.repofuncionan igual. - Usa
createrepo_c(la versión en C) en lugar decreaterepocuando sea posible, ya que es significativamente más rápido. - Si tienes repositorios muy grandes o muchos archivos, puedes usar herramientas como
yum-mirror,mrepooPulp(para soluciones más robustas) que manejan versiones, categorías y tareas automáticas. - Para entornos empresariales, considera usar Red Hat Satellite o Katello/Pulp para gestión centralizada de repositorios y contenido.
- Si usas SSL (HTTPS) para tu servidor HTTP, configura certificados válidos y asegúrate de que los clientes confíen en ellos.
- Puedes usar herramientas como
rsync+cronpara mantener espejo actualizado regularmente. - Para firmar paquetes, es buena práctica usar GPG con
rpm --addsignorpmsign. - Si tu red es rápida (gigabit), es buena idea tener el repositorio local en un servidor con SSD o almacenamiento rápido, para que clientes tengan buen rendimiento.

-
Fedora
- Incluir Repositorios en Fedora
- Creando un Repositorio Local Yum. ( CentOS / RedHat / Fedora)
- La distribución de Linux Ultramarine 41 basada en Fedora ya está disponible para descargar
- Cómo instalar un intercambiador de entornos de escritorio en Fedora
- Fedora KDE es un brillante sistema operativo de escritorio listo para cualquier tipo de usuario.
- Se lanzó Fedora Linux 41 con Linux Kernel 6.11, DNF5, GNOME 47 y más
- Fedora 39 beta ofrece la distribución de Linux con mejor rendimiento que he visto en mucho tiempo
- Fedora lanzó la computadora portátil Fedora Slimbook Linux con pantalla 3K, NVIDIA RTX 3050 Ti
- Fedora 38 Linux nueva versión de esta gran distro, disponible
- AWS de Amazon lanza 'Amazon Linux 2023' basado en Fedora y optimizado para la nube
- 20 comandos YUM para la gestión de paquetes
- La distro, Fedora Linux, declarada "Bien público digital"



