GNU/Linux >> Tutoriales Linux >  >> Linux

Cree un repositorio YUM/DNF basado en Nginx en Red Hat Enterprise Linux 8

Los repositorios de software generalmente se usan a través de Internet y pueden acceder a ellos múltiples usuarios en todo el mundo. Sin embargo, puede crear su propio repositorio local en su servidor local y usarlo como un solo usuario, o permitir el acceso a otras máquinas en su LAN usando un servidor web o FTP.

La ventaja de crear un repositorio local es que no necesita una conexión a Internet para instalar paquetes de software o actualizaciones. Otro beneficio es, por supuesto, la velocidad de descarga. Dado que los paquetes se descargan a través de una red local, las actualizaciones se realizan rápidamente.

Yellowdog Updater, Modified (YUM) o Dandified YUM (DNF) son administradores de paquetes de software que administran distribuciones de Linux basadas en RPM. Con YUM o DNF, puede instalar y actualizar grupos de computadoras sin tener que actualizar manualmente cada RPM.

En este artículo, explicaré cómo configurar un repositorio YUM/DNF local basado en la web en Red Hat Enterprise Linux (RHEL) 8, utilizando el DVD de instalación o el archivo ISO. También le mostraré cómo encontrar e instalar paquetes de software en máquinas cliente RHEL 8 usando el servidor Nginx HTTP y los servidores web Apache. Para obtener instrucciones sobre Apache, consulte Crear su propio repositorio YUM/DNF basado en Apache en Red Hat Enterprise Linux 8 y para obtener instrucciones sobre FTP, consulte Crear su propio repositorio YUM/DNF basado en FTP en Red Hat Enterprise Linux 8.

[¿Quiere probar Red Hat Enterprise Linux? Descárguelo ahora gratis.]

Requisitos

Deberá configurar dos sistemas Red Hat Enterprise Linux 8:un servidor de repositorio local y una máquina cliente que usará el repositorio local del servidor local. El resultado será algo como esto:

  • Servidor de repositorio local:RHEL 8 [10.0.0.10]

  • Equipo cliente local:RHEL 8 [10.0.0.11]

  • DVD de instalación de RHEL 8

  • Servidor HTTP Nginx

Crea tu repositorio

La creación de su repositorio implica una serie de pasos. Te guiaré a través de ellos.

Paso 1:Monte los medios de Red Hat Enterprise Linux 8

Primero, monte el medio local (el DVD, la memoria USB, etc.) que contiene Red Hat Enterprise Linux 8. Use el DVD de instalación:

$ sudo mount /dev/cdrom /mnt 
mount: /mnt: WARNING: device write-protected, mounted read-only.

O monta la imagen ISO:

$ sudo mount -o loop rhel-8.0-x86_64-dvd.iso /mnt

Paso 2:Cree un repositorio local de YUM a partir de los medios montados

Mueva los archivos de repositorio existentes ubicados en /etc/yum.repos.d :

$ sudo mv /etc/yum.repos.d/*.repo /tmp/

A partir de este punto, es mejor que continúes como usuario root. Cambiar a superusuario con su comando.

A continuación, cree un directorio para el repositorio:

# mkdir /local_repo

Use este directorio con Nginx o Apache para servir archivos a través de la LAN.

Cree el archivo de configuración del nuevo repositorio local, local-dvdrom.repo , bajo /etc/yum.repos.d directorio:

# touch /etc/yum.repos.d/local-dvdrom.repo
# chmod  u+rw,g+r,o+r  /etc/yum.repos.d/local-dvdrom.repo

Paso 3:Copie el contenido multimedia en el directorio local

Copie los archivos ISO localmente en /local_repo directorio:

# cd /mnt
# tar cvf - . | (cd /local_repo/; tar xvf -)

Espere hasta que se copien los archivos, luego verifique que los archivos se hayan copiado usando:

# ls -l /local_repo/
total 56
dr-xr-xr-x. 4 root root    38 Apr  4  2019 AppStream
dr-xr-xr-x. 4 root root    38 Apr  4  2019 BaseOS
dr-xr-xr-x. 3 root root    18 Apr  4  2019 EFI
-r--r--r--. 1 root root  8266 Mar  1  2019 EULA
-r--r--r--. 1 root root  1455 Apr  4  2019 extra_files.json
-r--r--r--. 1 root root 18092 Mar  1  2019 GPL
dr-xr-xr-x. 3 root root    76 Apr  4  2019 images
dr-xr-xr-x. 2 root root   256 Apr  4  2019 isolinux
-r--r--r--. 1 root root   103 Apr  4  2019 media.repo
-r--r--r--. 1 root root  1669 Mar  1  2019 RPM-GPG-KEY-redhat-beta
-r--r--r--. 1 root root  5134 Mar  1  2019 RPM-GPG-KEY-redhat-release
-r--r--r--. 1 root root  1796 Apr  4  2019 TRANS.TBL

Paso 4:Configure el repositorio local de YUM/DNF

Edite el archivo de configuración del repositorio que creó anteriormente:

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

Pegue esta configuración en él:

[LocalRepo_BaseOS]
name=LocalRepo_BaseOS
metadata_expire=-1
enabled=1
gpgcheck=1
baseurl=file:///local_repo/BaseOS/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[LocalRepo_AppStream]
name=LocalRepo_AppStream
metadata_expire=-1
enabled=1
gpgcheck=1
baseurl=file:///local_repo/AppStream/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

Instale los paquetes necesarios para crear, configurar y administrar el repositorio local:

# yum repolist
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
LocalRepo_AppStream                              94 MB/s | 5.3 MB     00:00    
LocalRepo_BaseOS                                 97 MB/s | 2.2 MB     00:00    
repo id                              repo name                            status
LocalRepo_AppStream                  LocalRepo_AppStream                  4,672
LocalRepo_BaseOS                     LocalRepo_BaseOS                     1,658


# yum install createrepo  yum-utils
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 0:02:33 ago on Sat 05 Oct 2019 09:52:46 PM UTC.
Package dnf-utils-4.0.2.2-3.el8.noarch is already installed.
Dependencies resolved.
================================================================================
 Package              Arch      Version            Repository              Size
================================================================================
Installing:
 createrepo_c         x86_64    0.11.0-1.el8       LocalRepo_AppStream     76 k
Installing dependencies:
 createrepo_c-libs    x86_64    0.11.0-1.el8       LocalRepo_AppStream    101 k
 drpm                 x86_64    0.3.0-14.el8       LocalRepo_AppStream     71 k

Transaction Summary
================================================================================
Install  3 Packages

Total size: 249 k
Installed size: 556 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : drpm-0.3.0-14.el8.x86_64                               1/3 
  Installing       : createrepo_c-libs-0.11.0-1.el8.x86_64                  2/3 
  Installing       : createrepo_c-0.11.0-1.el8.x86_64                       3/3 
  Running scriptlet: createrepo_c-0.11.0-1.el8.x86_64                       3/3 
  Verifying        : createrepo_c-0.11.0-1.el8.x86_64                       1/3 
  Verifying        : createrepo_c-libs-0.11.0-1.el8.x86_64                  2/3 
  Verifying        : drpm-0.3.0-14.el8.x86_64                               3/3 
Installed products updated.

Installed:
  createrepo_c-0.11.0-1.el8.x86_64     createrepo_c-libs-0.11.0-1.el8.x86_64    
  drpm-0.3.0-14.el8.x86_64            

Complete!

Finalmente, ejecute createrepo comando:

# createrepo /local_repo/
Directory walk started
Directory walk done - 6647 packages
Temporary output repo path: /local_repo/.repodata/
Preparing sqlite DBs
Pool started (with 5 workers)
Pool finished

Paso 5:Pruebe y verifique su repositorio local

En este paso, limpia los archivos del repositorio temporal y verifica que el repositorio local esté habilitado:

# yum clean all
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
12 files removed

# yum repolist
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
LocalRepo_AppStream                             120 MB/s | 5.3 MB     00:00    
LocalRepo_BaseOS                                103 MB/s | 2.2 MB     00:00    
repo id                              repo name                            status
LocalRepo_AppStream                  LocalRepo_AppStream                  4,672
LocalRepo_BaseOS                     LocalRepo_BaseOS                     1,658

Verifique que se haya creado el repositorio local:

# ls /local_repo/repodata/
26617821a5263fb13c7a49cc5e2d0b979b926eb17b9b4ed0b7df624e04c272f2-other.sqlite.bz2
5626e6dd41648dc6395def6889f4cc0e7f1006bb7d7eca748c9abd4c67fa5b9b-other.xml.gz
6290a72e46a90f98896c14f7664440de10c798d158ce0afe5f15a9f3896b7824-primary.xml.gz
a5c265589796231ed91b8b25a0473d05915bf62496495a004d321d042b26360c-filelists.sqlite.bz2
c8b51f43bdaa4f14cd5b083851cef1068e9284fa6557eb4552ba2ae22e7f72d5-primary.sqlite.bz2
ed21f77d28e263df02739a4bd55eb7247ffd0531c871bfe677d4b205dbffd5e8-filelists.xml.gz
repomd.xml

Puede ver que el repositorio local generó archivos, por lo que todo está bien en este punto.

Si lee atentamente el resultado del comando anterior, recibe el mensaje de advertencia, This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register . Si desea suprimir o evitar este mensaje mientras ejecuta dnf o yum luego edite el archivo /etc/yum/pluginconf.d/subscription-manager.conf :

# vim /etc/yum/pluginconf.d/subscription-manager.conf

y cambie el parámetro enabled=1 a enabled=0 :

[main]
enabled=0

Configure su servidor HTTP Nginx

Como mencioné antes, este artículo cubre la configuración de su propio repositorio utilizando el servidor HTTP de Nginx. Te guiaré a través de la instalación y configuración de Nginx para servir tu repositorio.

Instalar Nginx

Para instalar el servidor HTTP de Nginx usando YUM:

# yum install nginx
Last metadata expiration check: 0:19:18 ago on Sun 06 Oct 2019 09:51:22 AM UTC.
Dependencies resolved.
=======================================================================================
 Package          Arch   Version                             Repository           Size
=======================================================================================
Installing:
 nginx            x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream 569 k
Installing dependencies:
 gd               x86_64 2.2.5-6.el8                         LocalRepo_AppStream 144 k
 jbigkit-libs     x86_64 2.1-14.el8                          LocalRepo_AppStream  55 k
 libX11           x86_64 1.6.7-1.el8                         LocalRepo_AppStream 612 k
 libX11-common    noarch 1.6.7-1.el8                         LocalRepo_AppStream 157 k
 libXau           x86_64 1.0.8-13.el8                        LocalRepo_AppStream  36 k
 libXpm           x86_64 3.5.12-7.el8                        LocalRepo_AppStream  58 k
 libjpeg-turbo    x86_64 1.5.3-7.el8                         LocalRepo_AppStream 155 k
 libtiff          x86_64 4.0.9-13.el8                        LocalRepo_AppStream 188 k
 libwebp          x86_64 1.0.0-1.el8                         LocalRepo_AppStream 273 k
 libxcb           x86_64 1.13-5.el8                          LocalRepo_AppStream 230 k
 nginx-all-modules
                  noarch 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  23 k
 nginx-filesystem noarch 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  24 k
 nginx-mod-http-image-filter
                  x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  34 k
 nginx-mod-http-perl
                  x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  45 k
 nginx-mod-http-xslt-filter
                  x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  33 k
 nginx-mod-mail   x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  64 k
 nginx-mod-stream x86_64 1:1.14.1-8.module+el8+2505+fe936cef LocalRepo_AppStream  85 k
 dejavu-fonts-common
                  noarch 2.35-6.el8                          LocalRepo_BaseOS     74 k
 dejavu-sans-fonts
                  noarch 2.35-6.el8                          LocalRepo_BaseOS    1.5 M
 fontconfig       x86_64 2.13.1-3.el8                        LocalRepo_BaseOS    275 k
 fontpackages-filesystem
                  noarch 1.44-22.el8                         LocalRepo_BaseOS     16 k
 libxslt          x86_64 1.1.32-3.el8                        LocalRepo_BaseOS    249 k
Enabling module streams:
 nginx                   1.14                                                         

Transaction Summary
=======================================================================================
Install  23 Packages

Total size: 4.8 M
Installed size: 15 M
Is this ok [y/N]: y

Configure Nginx para que se inicie automáticamente en el arranque

Una vez que Nginx esté instalado, inicie y habilite el servicio para que se inicie automáticamente al arrancar y verifique su estado con los siguientes comandos:

# systemctl start nginx

# systemctl enable nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.

# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disa>
   Active: active (running) since Sun 2019-10-06 10:15:47 UTC; 22s ago
 Main PID: 3596 (nginx)
    Tasks: 3 (limit: 11528)
   Memory: 7.6M
   CGroup: /system.slice/nginx.service
           ├─3596 nginx: master process /usr/sbin/nginx
           ├─3597 nginx: worker process
           └─3598 nginx: worker process

Oct 06 10:15:47 server systemd[1]: Starting The nginx HTTP and reverse proxy server...
Oct 06 10:15:47 server nginx[3593]: nginx: the configuration file /etc/nginx/nginx.con>
Oct 06 10:15:47 server nginx[3593]: nginx: configuration file /etc/nginx/nginx.conf te>
Oct 06 10:15:47 server systemd[1]: Started The nginx HTTP and reverse proxy server.

Configurar el cortafuegos

A continuación, debe configurar el cortafuegos para que se pueda acceder a Nginx:

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

Verificar que Nginx esté funcionando

Ahora puede verificar que su servidor Nginx esté funcionando yendo a localhost URL en su navegador web. La página web predeterminada de Nginx http://localhost/ debe mostrarse.

Configurar Nginx

Para configurar Nginx, abra el archivo de configuración:

# vim /etc/nginx/nginx.conf

Ahora, encuentra el server del archivo y cámbielo para que se vea así:

    server {
	listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /local_repo/;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
                allow all;
                sendfile on;
                sendfile_max_chunk 1m;
                autoindex on;
                autoindex_exact_size off;
                autoindex_format html;
                autoindex_localtime on;
        }
	  error_page 404 /404.html;
            location = /40x.html {
        }

	  error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

Prueba y limpieza

Ahora, inicie el servicio Nginx nuevamente y pruebe su estado:

# systemctl restart nginx

# systemctl status nginx

● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disa>
   Active: active (running) since Sun 2019-10-06 10:15:47 UTC; 3 hours 51 min ago
Process: 24032 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 24033 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 24034 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
 Main PID: 24035 (nginx)
   Status: "Started, listening on: port 80"
    Tasks: 3 (limit: 2438)
   Memory: 3.9M
   CGroup: /system.slice/nginx.service
           ├─24035 nginx: master process /usr/sbin/nginx
           ├─24036 nginx: worker process
           └─24037 nginx: worker process

Oct 06 10:15:47 server systemd[1]: Starting The nginx HTTP and reverse proxy server...
Oct 06 10:15:47 server nginx[24033]: nginx: [warn] could not build optimal types_hash, you should increase either types_hash_max_si>
Oct 06 10:15:47 server nginx[24033]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Oct 06 10:15:47 server nginx[24033]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Oct 06 10:15:47 server nginx[24033]: nginx[24034]: nginx: [warn] could not build optimal types_hash, you should increase either types_hash_max_si
Oct 06 10:15:47 server systemd[1]: Started The nginx HTTP and reverse proxy server.

Todo está bien.

Cambiar permisos y configurar SELinux

Continúe con la configuración de seguridad cambiando los permisos en el local_repo directorio y configurando SELinux. Para cambiar los permisos:

# setfacl -R -m u:apache:rwx /local_repo/

Luego, verifique si SELinux está aplicando:

# getenforce
Enforcing

Si es Enforcing , escriba:

# chcon -Rt httpd_sys_content_t /local_repo/

Si SELinux no está configurado en Cumplimiento, los archivos no se publicarán desde el repositorio.

# setenforce enforcing

Y haga que el cambio sea permanente editando el archivo /etc/sysconfig/selinux y establezca el siguiente valor:

SELINUX=enforcing

Configurar el cliente

Ahora, para configurar el repositorio de la máquina cliente de Red Hat Enterprise Linux 8.

Agregar el repositorio

En la máquina del cliente, agregue los repositorios locales del servidor a la configuración de YUM del cliente:

$ sudo vim /etc/yum.repos.d/local-rhel8.repo 

Luego pegue la siguiente configuración (asegúrese de cambiar la dirección IP del servidor según su configuración):

[LocalServerRepo]
name=LocalServerRepo
enabled=1
gpgcheck=0
baseurl=[http://](http://10.0.0.10/)[**10.0.0.10**](http://10.0.0.10/)[/](http://10.0.0.10/)

Probar el repositorio

Pruebe el LocalServerRepo instalando un paquete. Por ejemplo:

$ yum repolist
Not root, Subscription Management repositories not updated
LocalServerRepo                                 112 MB/s | 7.2 MB     00:00    
Last metadata expiration check: 0:00:02 ago on Sun 06 Oct 2019 01:04:21 PM UTC.
repo id                              repo name                            status
LocalServerRepo                      LocalServerRepo                      6,647

$ sudo yum install nano
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
LocalServerRepo                                 103 MB/s | 7.2 MB     00:00    
Last metadata expiration check: 0:00:02 ago on Sun 06 Oct 2019 01:07:33 PM UTC.
Dependencies resolved.
================================================================================
 Package      Arch           Version              Repository               Size
================================================================================
Installing:
 nano         x86_64         2.9.8-1.el8          LocalServerRepo         580 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 580 k
Installed size: 2.2 M
Is this ok [y/N]: y
Downloading Packages:
nano-2.9.8-1.el8.x86_64.rpm                      19 MB/s | 580 kB     00:00    
--------------------------------------------------------------------------------
Total                                            17 MB/s | 580 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : nano-2.9.8-1.el8.x86_64                                1/1 
  Running scriptlet: nano-2.9.8-1.el8.x86_64                                1/1 
  Verifying        : nano-2.9.8-1.el8.x86_64                                1/1 
Installed products updated.

Installed:
  nano-2.9.8-1.el8.x86_64                                                       

Complete!

¡Eso es genial! Todo funciona como se esperaba. Ahora tiene un repositorio YUM/DNF local basado en Nginx en Red Hat Enterprise Linux 8, utilizando el DVD de instalación o el archivo ISO.


Linux
  1. Registre Red Hat Enterprise Linux y adjunte una suscripción con Ansible

  2. Configuración de una dirección IPv6 en Red Hat Enterprise Linux 7 y 8

  3. Creación de una imagen personalizada de Red Hat Enterprise Linux 7 para Microsoft Azure

  4. Aspectos a tener en cuenta al ejecutar Red Hat Enterprise Linux en Azure

  5. Cómo duplicar un repositorio en Linux

Descargar RedHat Linux

RHEL 6:guía de instalación paso a paso del servidor Red Hat Enterprise Linux

Pasos de instalación de Red Hat Enterprise Linux (RHEL) 8 con capturas de pantalla

Cómo crear un repositorio local de Red Hat

Cómo instalar Red Hat Enterprise Linux 8 (RHEL 8)

¿Cambiar el directorio raíz de Docker en Red Hat Linux?