Repositorio con Yum para Fedora Core

Este artículo explica los pasos para configurar un repositorio local para el yum que se actualiza en base a un proceso calendarizado (cron) y al cual se conectan las estaciones de trabajo para actualizarse.

1. Prerequisitos:

  • Servidor web, en este caso utilizamos apache
  • Paquetes createrepo y repoview instalados en el equipo que servirá de repositorio.
    • createrepo: se encarga de crear el repositorio propiamente cada vez que se descargan nuevos paquetes.
    • repoview: crea las páginas html desde las cuales el yum descarga los paquetes en cada actualización de las terminales.
  • rsync para sincronizar el repositorio local con el repositorio remoto
2. Estructura de directorios:

Antes de especificar que directorios se deben crear, debemos hablar de cómo el YUM contruye los URL para descargar los paquetes desde los repositorios.

Un URL para la actualización de los Extras puede tener la forma baseurl=http://download.fedora.redhat.com/pub/fedora/linux/extras/$releasever/$basearch
  • la propiedad baseurl le dice al yum que servidor utilizar
  • $releasever es reemplazado por FC5, FC6, etc.
  • $basearch es reemplazado por i386, x86_64, etc. En algunos servidores las arquitecturas se mezclan, por ejemplo al utilizar x86_64 descarga los paquetes i386
Esto significa que se deben estudiar las diferentes versiones y arquitecturas para poder decidir que directorios crear para el repositorio.

Según el sitio del proyecto Fedora Core la distribución de los paquetes sigue la siguiente norma.
  • Base: los paquetes que vienen en el CD de instalación
  • Update: actualizaciones para los paquetes dentro de base
  • Extras: paquetes adicionales y de terceros

Por fuera de la documentación de Fedora Core, existe el directorio Core, que en la instalación de debe hacer coincidir con Base.

Estructura de referencia: Tomando como referencia el documentroot en /var/www/html de deben crear:

  • $DOCUMENTROOT/yum/base
  • $DOCUMENTROOT/yum/updates
  • $DOCUMENTROOT/yum/extras

Luego la estructura para cada tipo de repositorio:

  • Dentro de $DOCUMENTROOT/yum/base se debe crear un directorio para cada versión de Fedora Core para la cual se desea crear el repositorio. Por ejemplo el directorio 6 para el FC6, dentro del directorio de la versión se deben copiar todos los rpm de todos los discos de instalación de la versión. Así, cada vez que se necesite una dependencia de base, se obtendrá directamente del repositorio local. Este repositorio nunca se actualiza.
  • Dentro de $DOCUMENTROOT/yum/updates se debe crear un directorio para cada versión de Fedora Core que se va a actualizar localmente y dentro de ese directorio uno por cada tipo de familia de procesador de los equipos cliente. Por ejemplo, se crea el directorio 6 para FC6 y dentro del mismo un directorio para i386 y otro para x86_64. Algunos repositorio agrupan ambos en x86_64 reduciendo considerablemente los tiempo de descargas al servidor local.
  • Dentro de $DOCUMENTROOT/yum/extras se repite la misma política utilizada para updates.

Resultado final:
$DOCUMENTROOT/yum/base
$DOCUMENTROOT/yum/updates
$DOCUMENTROOT/yum/extras
$DOCUMENTROOT/yum/updates/6/i386
$DOCUMENTROOT/yum/updates/6/x86_64
$DOCUMENTROOT/yum/extras/6/i386
$DOCUMENTROOT/yum/extras/6/x86_64

3. Scrips de actualización

Una visión general del proceso de actualización sería:

  1. Descargar los paquetes al servidor local utilizando rsync
  2. Crear o recrear el repositorio local con createrepo
  3. Crear las vistas web con repoview

Ejemplo:

Los comentarios se anteceden de \\. La Ubicación del script con permisos de ejecución es en /etc/cron.daily. En nuestro caso configurado para ejecutarse después de las 23 horas.

\\intérprete de comandos

#!/bin/bash

\\remueve archivos temporales

rm -fR /var/www/html/yum/extras/.olddata

rm -fR /var/www/html/yum/extras/i386/.olddata

\\sincroniza el servidor local

rsync -avvrt rsync://fedora.server4you.net/fedora/extras/6/i386 --exclude=debug/ --exclude=repodata/ --exclude=*debuginfo* --exclude=*i18* --exclude=*langpack* /var/www/html/yum/extras/6

\\crea o recrea el repositorio local

createrepo -q -c /var/www/cache /var/www/html/yum/extras/6/i386

\\crea o recrea la vista desde el servidor web

repoview -qu -t "Intes FC6 - Extras" http://localhost/yum/extras/i386 /var/www/html/yum/extras/i386

exit 0

scripts basados en http://news.softpedia.com/news/Creating-a-Local-Update-Repository-for-FC6-43559.shtml

4. Configuración de los clientes:

En los clientes se debe configurar el /etc/yum.conf agregándole al final una entrada por cada repositorio.

Por ejemplo, para Base:

[base]
name=Fedora Core $releasever - $basearch - Base
baseurl=http://192.168.10.254/yum/base/$releasever/$basearch
#mirrorlist=http://fedora.redhat.com/download/mirrors/fedora-core-$releasever
enabled=1
gpgcheck=0

Esto debe realizarse para Extras y Uptade.

Luego se deben deshabilitar los repositorios que trae el yum por defecto y que se encuentran en /etc/yum.repos.d; esto se realiza colocando el 0 el valor de enabled en cada uno de los repositorios que localmente se actualizaran, el yum presentará un error en caso de que existan 2 repositorios configurados con el mismo objetivo.

Comentarios

Entradas populares de este blog

Como encontrar el woeid para configurar el clima

Configurar Metrotel iVoz detrás de router Encore