Repositorio con Yum para Fedora Core
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
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
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:
- Descargar los paquetes al servidor local utilizando rsync
- Crear o recrear el repositorio local con createrepo
- 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