Cómo configurar el repositorio HTTP Yum local en CentOS 7


Un repositorio de software ("repositorio" en breve) es una ubicación de almacenamiento de archivos central para guardar y mantener los paquetes de software, desde el cual los usuarios pueden recuperar paquetes e instalarlos en sus computadoras.

Los repositorios a menudo se almacenan en servidores en una red, por ejemplo, una Internet, a la que pueden acceder varios usuarios. Sin embargo, puede crear y configurar un repositorio local en su computadora y acceder a él como un solo usuario o permitir el acceso a otras máquinas en su LAN (Red de área local).

Una ventaja de configurar un repositorio local es que no necesita una conexión a Internet para instalar paquetes de software.

YUM (Yellowdog Updater Modified) es una herramienta de administración de paquetes ampliamente utilizada para RPM (RedHat Package Manager) basada en sistemas Linux, que facilita la instalación de software en Red Hat/CentOS Linux.

En este artículo, explicaremos cómo configurar un repositorio YUM local a través de un servidor web HTTP (Nginx) en CentOS 7 VPS y también le mostraremos cómo encontrar e instalar paquetes de software en máquinas cliente CentOS 7.

Yum HTTP Repository Server:	CentOS 7 [192.168.0.100]
Client Machine:		CentOS 7 [192.168.0.101]

Paso 1: Instale el servidor web Nginx

1. Primero comience instalando el servidor HTTP Nginx desde el repositorio EPEL usando el administrador de paquetes YUM de la siguiente manera.

# yum install epel-release
# yum install nginx 

2. Una vez que haya instalado el servidor web Nginx, puede iniciarlo por primera vez y habilitarlo para que se inicie automáticamente al arrancar el sistema.

 
# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx

3. A continuación, debe abrir los puertos 80 y 443 para permitir el tráfico web al servicio Nginx, actualizar las reglas del firewall del sistema para permitir paquetes entrantes en HTTP y HTTPS usando los siguientes comandos.

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --zone=public --permanent --add-service=https
# firewall-cmd --reload

4. Ahora puede confirmar que su servidor Nginx está funcionando, usando la siguiente URL; si ve la página web predeterminada de Nginx, todo está bien.

http://SERVER_DOMAIN_NAME_OR_IP 

Paso 2: Cree un repositorio local de Yum

5. En este paso, debe instalar los paquetes necesarios para crear, configurar y administrar su repositorio local.

# yum install createrepo  yum-utils

6. A continuación, cree los directorios necesarios (repositorios yum) que almacenarán paquetes y cualquier información relacionada.

# mkdir -p /var/www/html/repos/{base,centosplus,extras,updates}

7. Luego use la herramienta reposync para sincronizar los repositorios CentOS YUM con los directorios locales como se muestra.

# reposync -g -l -d -m --repoid=base --newest-only --download-metadata --download_path=/var/www/html/repos/
# reposync -g -l -d -m --repoid=centosplus --newest-only --download-metadata --download_path=/var/www/html/repos/
# reposync -g -l -d -m --repoid=extras --newest-only --download-metadata --download_path=/var/www/html/repos/
# reposync -g -l -d -m --repoid=updates --newest-only --download-metadata --download_path=/var/www/html/repos/
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.fibergrid.in
 * epel: mirror.xeonbd.com
 * extras: mirrors.fibergrid.in
 * updates: mirrors.fibergrid.in
base/7/x86_64/group                                                    | 891 kB  00:00:02     
No Presto metadata available for base
(1/9911): 389-ds-base-snmp-1.3.7.5-18.el7.x86_64.rpm                   | 163 kB  00:00:02     
(2/9911): 389-ds-base-devel-1.3.7.5-18.el7.x86_64.rpm                  | 267 kB  00:00:02     
(3/9911): ElectricFence-2.2.2-39.el7.i686.rpm                          |  35 kB  00:00:00     
(4/9911): ElectricFence-2.2.2-39.el7.x86_64.rpm                        |  35 kB  00:00:00     
(5/9911): 389-ds-base-libs-1.3.7.5-18.el7.x86_64.rpm                   | 695 kB  00:00:04     
(6/9911): GConf2-devel-3.2.6-8.el7.i686.rpm                            | 110 kB  00:00:00     
(7/9911): GConf2-devel-3.2.6-8.el7.x86_64.rpm                          | 110 kB  00:00:00     
(8/9911): GConf2-3.2.6-8.el7.i686.rpm                                  | 1.0 MB  00:00:06     

En los comandos anteriores, la opción:

  • -g : permite la eliminación de paquetes que no superan la verificación de firmas GPG después de la descarga.
  • -l : habilita la compatibilidad con el complemento yum.
  • -d : permite eliminar paquetes locales que ya no están presentes en el repositorio.
  • -m : permite la descarga de archivos comps.xml.
  • --repoid : especifica el ID del repositorio.
  • --newest-only : indica a reposync que solo extraiga la última versión de cada paquete en los repositorios.
  • --download-metadata : permite descargar todos los metadatos no predeterminados.
  • --download_path : especifica la ruta para descargar paquetes.

8. A continuación, compruebe el contenido de sus directorios locales para asegurarse de que todos los paquetes se hayan sincronizado localmente.

# ls -l /var/www/html/repos/base/
# ls -l /var/www/html/repos/base/Packages/
# ls -l /var/www/html/repos/centosplus/
# ls -l /var/www/html/repos/centosplus/Packages/
# ls -l /var/www/html/repos/extras/
# ls -l /var/www/html/repos/extras/Packages/
# ls -l /var/www/html/repos/updates/
# ls -l /var/www/html/repos/updates/Packages/

9. Ahora cree un nuevo repositorio para los repositorios locales ejecutando los siguientes comandos, donde el indicador -g se usa para actualizar la información del grupo de paquetes usando el archivo .xml especificado .

# createrepo -g comps.xml /var/www/html/repos/base/  
# createrepo -g comps.xml /var/www/html/repos/centosplus/	
# createrepo -g comps.xml /var/www/html/repos/extras/  
# createrepo -g comps.xml /var/www/html/repos/updates/  

10. Para permitir la visualización de repositorios y paquetes en ellos, a través de un navegador web, cree un bloque de servidor Nginx que apunte a la raíz de sus repositorios como se muestra.

# vim /etc/nginx/conf.d/repos.conf 

Agregue la siguiente configuración al archivo repos.conf.

server {
        listen   80;
        server_name  repos.test.lab;	#change  test.lab to your real domain 
        root   /var/www/html/repos;
        location / {
                index  index.php index.html index.htm;
                autoindex on;	#enable listing of directory index
        }
}

Guarde el archivo y ciérrelo.

11. Luego reinicie su servidor Nginx y vea los repositorios desde un navegador web usando la siguiente URL.

http://repos.test.lab

Paso 3: Cree un trabajo cron para sincronizar y crear repositorios

12. A continuación, agregue un trabajo cron que sincronizará automáticamente sus repositorios locales con los repositorios oficiales de CentOS para obtener las actualizaciones y los parches de seguridad.

# vim /etc/cron.daily/update-localrepos

Agregue estos comandos en la secuencia de comandos.

#!/bin/bash
##specify all local repositories in a single variable
LOCAL_REPOS=”base centosplus extras updates”
##a loop to update repos one at a time 
for REPO in ${LOCAL_REPOS}; do
reposync -g -l -d -m --repoid=$REPO --newest-only --download-metadata --download_path=/var/www/html/repos/
createrepo -g comps.xml /var/www/html/repos/$REPO/  
done

Guarde el script, ciérrelo y establezca los permisos correspondientes.

# chmod 755 /etc/cron.daily/update-localrepos

Paso 4: configurar el repositorio local de Yum en las máquinas cliente

13. Ahora en sus máquinas cliente CentOS, agregue sus repositorios locales a la configuración de YUM.

# vim /etc/yum.repos.d/local-repos.repo

Copie y pegue la configuración a continuación en el archivo local-repos.repo (haga cambios donde sea necesario).

[local-base]
name=CentOS Base
baseurl=http://repos.test.lab/base/
gpgcheck=0
enabled=1

[local-centosplus]
name=CentOS CentOSPlus
baseurl=http://repos.test.lab/centosplus/
gpgcheck=0
enabled=1

[local-extras]
name=CentOS Extras
baseurl=http://repos.test.lab/extras/
gpgcheck=0
enabled=1

[local-updates]
name=CentOS Updates
baseurl=http://repos.test.lab/updates/
gpgcheck=0
enabled=1

Guarde el archivo y comience a usar sus espejos YUM locales.

14. A continuación, ejecute el siguiente comando para ver sus repositorios locales en la lista de repositorios YUM disponibles, en las máquinas cliente.

#  yum repolist
OR
# yum repolist all

¡Eso es todo! En este artículo, hemos explicado cómo configurar un repositorio YUM local en CentOS 7. Esperamos que esta guía le haya resultado útil. Si tiene alguna pregunta o cualquier otro pensamiento para compartir, utilice el formulario de comentarios a continuación.