Los repositorios de software generalmente se usan en 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 Apache 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 web Apache. Cubriremos el mismo proceso para NGINX y FTP en artículos futuros.
[¿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 web Apache
Crea tu repositorio
La creación de su repositorio implica una serie de pasos. Vamos a caminar 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 sigamos 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 creamos 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, verá 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 web Apache
Como mencioné antes, este artículo cubre la configuración de su propio repositorio utilizando el servidor web Apache. Veamos cómo instalar y configurar Apache para servir su repositorio.
Instalar Apache
Para instalar el httpd
(Apache) paquete usando YUM:
# yum install httpd
Last metadata expiration check: 3:38:03 ago on Sun 06 Oct 2019 09:51:22 AM UTC.
Dependencies resolved.
=========================================================================================
Package Arch Version Repository Size
=========================================================================================
Installing:
httpd x86_64 2.4.37-10.module+el8+2764+7127e69e LocalRepo_AppStream 1.4 M
Installing dependencies:
apr x86_64 1.6.3-9.el8 LocalRepo_AppStream 125 k
apr-util x86_64 1.6.1-6.el8 LocalRepo_AppStream 105 k
httpd-filesystem noarch 2.4.37-10.module+el8+2764+7127e69e LocalRepo_AppStream 34 k
httpd-tools x86_64 2.4.37-10.module+el8+2764+7127e69e LocalRepo_AppStream 101 k
mod_http2 x86_64 1.11.3-1.module+el8+2443+605475b7 LocalRepo_AppStream 156 k
mailcap noarch 2.1.48-3.el8 LocalRepo_BaseOS 39 k
redhat-logos-httpd noarch 80.7-1.el8 LocalRepo_BaseOS 25 k
Installing weak dependencies:
apr-util-bdb x86_64 1.6.1-6.el8 LocalRepo_AppStream 25 k
apr-util-openssl x86_64 1.6.1-6.el8 LocalRepo_AppStream 27 k
Enabling module streams:
httpd 2.4
Transaction Summary
=========================================================================================
Install 10 Packages
Total download size: 2.0 M
Installed size: 5.5 M
Is this ok [y/N]:
Configure Apache para que se inicie automáticamente en el arranque
Una vez que Apache esté instalado, inicie y habilite httpd
servicio para iniciarse automáticamente en el arranque y verificar su estado usando los siguientes comandos:
# systemctl start httpd
# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disa>
Active: active (running) since Sun 2019-10-06 10:15:47 UTC; 22s ago
Main PID: 16880 (httpd)
Tasks: 213 (limit: 2348)
Memory: 7.6M
CGroup: /system.slice/httpd.service
├─16880 /usr/sbin/httpd -DFOREGROUND
├─16881 /usr/sbin/httpd -DFOREGROUND
├─16883 /usr/sbin/httpd -DFOREGROUND
├─16884 /usr/sbin/httpd -DFOREGROUND
└─16885 /usr/sbin/httpd -DFOREGROUND
Oct 06 10:15:47 server systemd[1]: Starting Apache HTTP Server...
Oct 06 10:15:47 httpd[16880]: AH00558: httpd: Could not reliably determine the>
Oct 06 10:15:47 server httpd[16880]: Server configured, listening on: port 80
Oct 06 10:15:47 server systemd[1]: Started The Apache HTTP Server.
Configurar el cortafuegos
A continuación, configure el cortafuegos para que se pueda acceder a Apache:
# firewall-cmd --zone=public --permanent --add-service=http
success
# firewall-cmd --zone=public --permanent --add-service=https
success
# firewall-cmd --reload
success
Verificar que Apache esté funcionando
Ahora puede verificar que su servidor Apache esté funcionando yendo a localhost
URL en su navegador web. La página web predeterminada de Apache http://localhost/
debe mostrarse.
Configurar Apache
Para configurar Apache, abra el archivo de configuración:
# vim /etc/httpd/conf/httpd.conf
Cuando se abra, busque el DocumentRoot
y cámbielo a:
DocumentRoot "/local_repo"
Luego cambie el /var/www/http
sección del directorio:
<Directory "/local_repo">
Options All Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Prueba y limpieza
Ahora, vuelva a iniciar el servicio Apache y pruebe su estado:
# systemctl start httpd
# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disab>
Active: active (running) since Sun 2019-10-06 14:06:34 UTC; 7s ago
Docs: man:httpd.service(8)
Main PID: 5402 (httpd)
Status: "Started, listening on: port 80"
Tasks: 213 (limit: 11528)
Memory: 39.3M
CGroup: /system.slice/httpd.service
├─5402 /usr/sbin/httpd -DFOREGROUND
├─5403 /usr/sbin/httpd -DFOREGROUND
├─5404 /usr/sbin/httpd -DFOREGROUND
├─5405 /usr/sbin/httpd -DFOREGROUND
└─5406 /usr/sbin/httpd -DFOREGROUND
Oct 06 14:06:34 server systemd[1]: Starting The Apache HTTP Server...
Oct 06 14:06:34 server httpd[5402]: AH00558: httpd: Could not reliably determine the ser>
Oct 06 14:06:34 server httpd[5402]: Server configured, listening on: port 80
Oct 06 14:06:34 server systemd[1]: Started The Apache HTTP Server.
Todo es bueno. Elimina la página de bienvenida para que puedas servir los archivos del repositorio:
# rm -rf /etc/httpd/conf.d/welcome.conf
Ahora, prueba httpd
y reinicie Apache:
# httpd -t
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
# systemctl restart httpd
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:httpd: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:
$ sudo yum install mc
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:01:42 ago on Sun 06 Oct 2019 02:14:03 PM UTC.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
mc x86_64 1:4.8.19-9.el8 LocalServerRepo 1.9 M
Transaction Summary
================================================================================
Install 1 Package
Total download size: 1.9 M
Installed size: 6.8 M
Is this ok [y/N]: y
Downloading Packages:
mc-4.8.19-9.el8.x86_64.rpm 34 MB/s | 1.9 MB 00:00
--------------------------------------------------------------------------------
Total 32 MB/s | 1.9 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : mc-1:4.8.19-9.el8.x86_64 1/1
Running scriptlet: mc-1:4.8.19-9.el8.x86_64 1/1
Verifying : mc-1:4.8.19-9.el8.x86_64 1/1
Installed products updated.
Installed:
mc-1:4.8.19-9.el8.x86_64
Complete!
¡Eso es genial! Todo funciona como se esperaba. Ahora tiene un repositorio YUM/DNF local basado en Apache en Red Hat Enterprise Linux 8, utilizando el DVD de instalación o el archivo ISO.