Repositorio local (mirror) CentOS 7

Si así es, aquí les traigo como hacer un mirror de CentOS 7. ¿Cuáles son los beneficios de esto? Entre ellos ahorras ancho de banda de Internet, mantienes una copia local de tus repositorios con lo cual las descargas e instalaciones son mucho mas rápidas, y la principal de todas es muy útil como servidor de actualizaciones si tienes 10 servidores o 1000 estaciones de trabajo con CentOS creo que esta es tu mejor opción pues podrás ofrecer un servicio de actualización rápido y con la velocidad de tu red LAN.

Ahora, puedes hacer tu mirror como de 10 formas pero yo te voy a decir la que en mi opinión es la mas rápida y cómoda, pues puedes hacer tu mirror en cualquier distribución que soporte rsync. Siiiiiii! cualquiera, puedes leer solo la parte de rsync, hacer un repositorio local de CentOS en ubuntu, debian, fedora, redhat, slackware, todos soportan rsync

rsync es una aplicación libre para sistemas de tipo Unix y Microsoft Windows que ofrece transmisión eficiente de datos incrementales, que opera también con datos comprimidos y cifrados. Mediante una técnica de delta encoding, permite sincronizar archivos y directorios entre dos máquinas de una red o entre dos ubicaciones en una misma máquina, minimizando el volumen de datos transferidos.

Procedemos a instalar rsync
# yum install rsync

Una vez  instalado solo debes buscar en la lista de mirrors de CentOS algún mirror cercano a tu localidad que trabaje con rsync (es la sexta columna) Rsync Location

Crea alguna carpeta donde puedas colocar el repositorio, yo solamente hice un mirror de CentOS 7, completo con isos y todas las carpetas disponibles, lo cual ocupo 38 GB, entonces toma en consideración si vas a hacer un mirror parcial, de otras versiones de centOS o un mirror completo. ¿Cuánto espacio te ocupara?, es algo que debes evaluar.

# mkdir -p /home/repo/CentOS/7

El repositorio tiene todas estas carpetas:

  • atomic
  • centosplus
  • cloud
  • cr
  • extras
  • fasttrack
  • isos
  • os
  • sclo
  • storage
  • updates
  • virt

rsync funciona de la siguiente forma:

# rsync --delete-excluded --exclude "local" --exclude "isos" --exclude "*.iso"

  • Con la etiqueta delete–excluded y –exclude pueden ignorar carpetas o archivos, ejemplo carpeta iso, o archivos .iso, muy fácil no?

# rsync -aqzH --delete msync.centos.org::CentOS /path/to/local/mirror/root

  • Con la opción –delete, eliminaran los archivos que ya no existen en la fuente.
  • -a archiva y almacena
  • -q modo silencioso, suprime los mensajes que no sean de errores
  • -z comprime la data durante la transferencia
  • -H conserva los enlaces duros, si quisieras también te recomendaría la opción -l para mantener los enlaces simbólicos

Como lo hice yo? sencillo así:

# rsync -avzqlH --delete --delay-updates rsync://ftp.osuosl.org/centos/7/ /home/repo/CentOS/7

No te apresures, ye te explico porque lo hice asi.

  • –delay-updates coloca todos los archivos actualizados al finalizar toda la descarga, me entiendes?, es decir el no va actualizando cada vez que descarga un archivo nuevo, sino por el contrario, si habían 100 archivos nuevos, luego de finalizar los 100 archivos nuevos, rsync los ubica en su lugar
  • rsync://ftp.osuosl.org/centos/7/ porque solamente quiero hacer del CentOS 7
  • /var/www/html/repo/CentOS/7 donde voy a colocar todos mis archivos que copie de la fuente.

No es necesario, pero yo recomiendo el paquete createrepo, simplemente lo que hace es darle la caracteristica de http y crear un index para tu repositorio

# yum install createrepo

Luego simplemente corre el comando apuntando a tu repositorio

# createrepo /home/repo/CentOS/7

Ahora una vez finalizado, debes compartirlo de alguna forma, yo siempre uso un servidor http, continuando con CentOS 7, pueden instalar un servidor un servidor web basico de la siguiente forma (usa httpd, no es apache)

# yum group install -y "Basic Web Server

Crea un enlace simbolico del sitio real del repositorio a la carpeta «www»

# ln -s /home/repo /var/www/html/repo

Creamos las carpetas sites-available y sites-enabled
# mkdir /etc/httpd/sites-available
# mkdir /etc/httpd/sites-enabled

Editamos el archivo httpd.conf para agregar todos nuestros sitios activos de sites-enabled

# vi /etc/httpd/conf/httpd.conf

Agrega esta linea al final del archivo
IncludeOptional sites-enabled/*.conf

Creamos y editamos nuestro sitio web

# vi /etc/httpd/sites-available/repocentos.conf

<VirtualHost *:80>
ServerName repocentos.com
#ServerAlias example.com
DocumentRoot /var/www/html/repo/CentOS/
ErrorLog /var/log/httpd/error.log
CustomLog /var/log/httpd/requests.log combined
</VirtualHost>

Activamos nuestro sitio creando un enlace simbolico

# ln -s /etc/httpd/sites-available/repocentos.conf  /etc/httpd/sites-enabled/repocentos.conf

Cambiamos el dueño y grupo de los archivos y carpetas para apache

# chown apache. www/ -R

Ejecutamos la siguiente orden para que el servidor web arranque desde que iniciamos la maquina

# systemctl enable httpd.service

Reiniciamos el servidor web con el siguientes comando

# systemctl restart httpd

Como lo podemos usar?

Crea un archivo en /etc/yum.repos.d/local.repo y pega las siguientes lineas:

[os]
name=master - Base
baseurl=http://ip o url/repo/CentOS/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[updates]
name=master - Updates
baseurl=http://ip o url/repo/CentOS/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[extras]
name=master - Extras
baseurl=http://ip o url/repo/CentOS/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[centosplus]
name=master - CentosPlus
baseurl=http://ip o url/repo/CentOS/$releasever/centosplus/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

Refrescamos los repositorios con:
# yum clean all

# yum repolist all

# yum update

Bueno eso es todo por esta vez. Como siempre recuerden seguir de cerca mis post y esta pagina web. Comenten y así todos compartimos nuestros conocimientos, hasta la próxima!!!


11 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   elendilnarsil dijo

    Es adecuado Centos para usar en una PC de escritorio de un usuario final? O es un desperdicio de recursos? Lo he estado probando vía Live-usb y me ha gustado mucho.

    1.    BrodyDalle dijo

      Es muy estable, realmente es una buena opción. Gracias por tu comentario

    2.    HO2Gi dijo

      Estimado elendilnarsil usa Fedora como usuario final con centos tienes que trabajar mucho y es un servidor es muy estable.

  2.   Gonzalo Martinez dijo

    Poder se puede. Pero no esta muy pensado para desktops de usuarios normales.

    No te asombres si no te agarra la Wifi o algun diver de no se, camara web, (ya que incluye drivers mas que nada de hard de servidores), que en los repo no haya algun paquete de no se, codecs, ofimatica, o algo asi, o que los paquetes sean viejos (pero estables como un fierro)

    1.    BrodyDalle dijo

      No estoy de acuerdo contigo, existen repositorios oficiales orientados a este fin, como epel y nux https://wiki.centos.org/TipsAndTricks/MultimediaOnCentOS7

  3.   Gonzalo Martinez dijo

    Yendo al articulo, excelente!!

    Cuando se tiene una gran cantidad de equipos linux, las instalaciones se hacen muchisimo mas rapidas y practicas.

    1.    BrodyDalle dijo

      así es, gracias por tu comentario

  4.   Alexmanafan dijo

    Hola colega, puedo cancelar y volver a continuar la descarga del repo? continua por donde quedo?
    Gracias

  5.   luis dijo

    una duda amigo, como consumo por http el repo, es decir ver las estructura del repo desde httpd
    http://172.16.1.9 me sale la pagina de apache pero quiero poner http://172.16.1.9/??? para ver la estructura por http.

    gracias

  6.   Odnamra dijo

    Necesito hacer una pregunta por dudas que me surgió…
    rsync -avzqlH –delete –delay-updates rsync:…. hasta hay está bien pero no tengo que poner donde se va a copiar despues?
    Por ejemplo: rsync -avzqlH –delete –delay-updates rsync:…. /run/media/miuser/Datos/repository/centos7/7/

  7.   Daniel Morales dijo

    Estimado buenas tardes

    Buscando informacion en la Web consegui este interesante manual que escribiste, Felicidades por eso. Mi duda me surge porque quiero crear un Mirror con varias distribuciones de linux, Centos, OracleLinux, Debian, todas ellas con sus ultimas versiones que tengo instaladas en la empresa. Pero como hago para hacer que en el mismo servidor mirror almacene varias distribuciones y versiones? Debo crear otra carpeta con el nombre de las distribuciones y asi sucesivamente? Estos repositorios se actualizan automaticamente o tengo que ejecutar algun comando cada cierto tiempo? Atento a tus comentarios. Feliz día