Objetivos
- Crear un repositorio local para dnf y publicarlo via un WebServer.
- El proveedor de Software clamav, ha hecho disponible el paquete RPM para RHEL > 8, pero no provee un repositorio Oficial de DNF/YUM. Se le ha solicitado crear un repositorio local con la última versión disponible de este software.
Entorno Inicial
- Usuario: student
- Máquina: servera
- Contraseña inicial: student
- Herramientas utilizadas: Shell Bash y utilidades básicas de Linux.
Pasos del Laboratorio
Prerequisitos
-
Inicio de sesión
- Inicia sesión en la máquina
serveradesdebastioncomo el usuariostudentutilizando la llave privada proporcionada:
ssh student-#-servera - Inicia sesión en la máquina
Parte 1: Creación de Repositorio
-
Cambiar a superusuario
- Usa el comando sudo -i para obtener privilegios de root:
sudo -i -
Se procederá a crer un directorio en cual tendrá el contenido del repositorio local en
/opt/repo-local-clamav.mkdir -p /opt/repo-local-clamav - Se decargará en este directorio el archivo RPM solicitado.
cd /opt/repo-local-clamav curl -LO https://www.clamav.net/downloads/production/clamav-1.4.2.linux.x86_64.rpm cd - Consultar el contenido del directorio.
find /opt/repo-local-clamav/ - Instalar paquete para creación de repositorio.
dnf install createrepo -y - Crear repositorio local.
createrepo /opt/repo-local-clamav/ -
Consultar el contenido del directorio.
En la salida debe existir la metada del repositorio similar a:find /opt/repo-local-clamav//opt/repo-local-clamav/ /opt/repo-local-clamav/clamav-1.4.2.linux.x86_64.rpm /opt/repo-local-clamav/repodata /opt/repo-local-clamav/repodata/f0b016f48ad13f2918100205609688ec45bcd0a102bf5facce4267aab82654f9-primary.xml.gz /opt/repo-local-clamav/repodata/ea5e56c8ededf9542ad4955f31bc6842daa7aeb9ad2a5236455f914cf51eb72e-filelists.xml.gz /opt/repo-local-clamav/repodata/474ad35a83a3c26cefb187f0d72145af6bb74b2608cc2eaf6b8f9466318f80bd-other.xml.gz /opt/repo-local-clamav/repodata/4de2a02b77f9dc339ce7ed958200cfe870d2d85c9c112ad55a2b249946ff5328-primary.sqlite.bz2 /opt/repo-local-clamav/repodata/62a3025cc3536a07a1bde9ce7a5a23d647e13cacb30a3f1e9fecffe520918402-filelists.sqlite.bz2 /opt/repo-local-clamav/repodata/8bc19179b93e1938f2f9ea8c8ac35c4090b3ff9e3a8084b3b746f2591d558488-other.sqlite.bz2 /opt/repo-local-clamav/repodata/repomd.xml -
Validar funcionamiento de repositorio local (no webserver). Crear archivo
/etc/yum.repos.d/repo-local-clamav.repo.9. Listar repositorios de YUM/DNF.cat << EOF > /etc/yum.repos.d/repo-local-clamav.repo [repo-local-clamav] name=clamav Repo Local baseurl=file:///opt/repo-local-clamav gpgcheck=no EOFSalida debe contener:dnf repolistrepo-local-clamav clamav Repo Local -
Instalar paquete clamav, desde repositorio local.
Aceptar condnf install clamavy -
Desinstalar paquete clamav, desde repositorio local.
dnf remove clamav -y
Parte 2: Publicación de Repositorio
- Definir contexto de SELinux para directorio
semanage fcontext -a -t public_content_t '/opt/repo-local-clamav(/.*)?' restorecon -RvF /opt/repo-local-clamav - Instalar apache.
dnf install httpd -y - Habilitar e Iniciar apache.
systemctl enable --now httpd - Agregar configuración de repositorio local en apache.
cat << EOF > /etc/httpd/conf.d/repo-local-clamav.conf <Directory "/opt/repo-local-clamav"> Options Indexes Require all granted </Directory> Alias /repo-local-clamav /opt/repo-local-clamav EOF - Aplicar configuración apache.
systemctl restart httpd - Validar contenido publicado.
Debe mostrar salida similar a:
curl -I http://localhost/repo-local-clamav/repodata/repomd.xmlHTTP/1.1 200 OK Date: Tue, 15 Apr 2025 23:48:28 GMT Server: Apache/2.4.62 (Rocky Linux) Last-Modified: Tue, 15 Apr 2025 23:24:05 GMT ETag: "c01-632d976fe1101" Accept-Ranges: bytes Content-Length: 3073 Content-Type: text/xml - Habilitar puertos 80 en firewall.
firewall-cmd --add-service http --permanent firewall-cmd --reload - Modificar configuración re repositorio local para utilizar contenido en Apache. Editando archivo
/etc/yum.repos.d/repo-local-clamav.repo, remplazando file por http.sed -i "s/^\(baseurl=\).*/\\1http:\/\/$(hostname -f)\/repo-local-clamav/g" /etc/yum.repos.d/repo-local-clamav.repo cat /etc/yum.repos.d/repo-local-clamav.repo - Instalar paquete clamav, desde repositorio local.
Aceptar con
dnf install clamavy -
Puede copiar el archivo
/etc/yum.repos.d/repo-local-clamav.repo, a otro servidor y probar instalar el paquete.NOTA: Utilice
scporsync. -
Regresa al usuario student:
exit
Resultados Esperados
- Se ha creado correctamente un repositorio local de paquetes RPM accesible mediante dnf.
- El repositorio local ha sido publicado y es accesible a través de un servidor web configurado adecuadamente.
- El paquete de software ClamAV, compatible con RHEL 8 o superior, ha sido integrado al repositorio local.
- El servidor es capaz de instalar y gestionar ClamAV utilizando dnf desde el repositorio local creado.