Empecemos suponiendo que ya tenes tu Red Hat funcionando con apt-get y controlas apt-get con los ojos cerrados . O eso o tienes un post-it en el monitor. Como resulta que los servidores de apt-rpm con las actualizaciones están algo saturados (malas lenguas indican que se debe a mi artículo sobre el apt-rpm), necesitas un servidor de actualizaciones apt-get-izado rápido y accesible; estás pidiendo a gritos tener tu propio servidor de apt-update.
Ingredientes
- un ordenador con Linux instalado y tenga el suficiente espacio en
disco. Calcula unos 3 GB por versión de RedHat que quieras tener en el update server, para no tener problemas de espacio.
- el demonio crond funcionando en el sistema
- el demonio ftpd (o el httpd , a elegir uno. En el
artículo, utilizo ftpd. Para httpd, cambia el árbol de directorios a uno usable por apache)
- tener en tu sistema el programa rsync
- los programas genbasedir-0.5, makeapt.sh y syncRH80.sh , disponibles
en este tar.gz
- Necesitarás saber usar un editor (el $EDITOR) y moverte por los directorios como Pedro por su casa.
- Opcionalmente, necesitarás acceso a un servidor de correo/utilizar un servidor de correo.
- Imprescindible: una imagen de perejil, para poder verla al final y decir eso de "¡rico, rico!"
Preparación
Empieza creando un arbol de directorios donde acabarás almacenando los rpms que vayas a albergar en tu equipo. Por ejemplo, para los updates de RedHat 8.0 yo utilizo este árbol de directórios:
/var/ftp/pub/redhat/linux/updates/8.0/en/os
/var/ftp/pub/redhat/linux/updates/8.0/en/os/RPMS
/var/ftp/pub/redhat/linux/updates/8.0/en/os/SRPMS
/var/ftp/pub/redhat/linux/updates/8.0/en/os/i386
/var/ftp/pub/redhat/linux/updates/8.0/en/os/i686
Evidentemente, puedes tener en el mismo servidor los updates para diferentes
distribuciones o versiones de una distribución apt-get-izada. Solo es cuestión de tener espacio en disco.
El siguiente paso radica en encontrar un servidor con el que puedas
sincronizar las actualizaciones. Es recomendable pedir permiso al administrador
del servidor antes de empezar a sincronizarse con el servidor. Aquí tienes una
lista no exhaustiva con algunos servidores que ofrecen servicio de rsync.
Una vez ya tenemos los datos del servidor con rsync a usar, procederemos a
editar el pequeño script llamado syncRH80.sh (y lo guardas en
/usr/local/sbin/ ) para bajarnos las actualizaciones. Este script, que está en el tar.gz que te indiqué al principio, usa un servidor de rsync que uso yo. Cámbialo para que se adapte al servidor de rsync que vayas a usar y, si es necesario, cambiad también la ruta a la localización del árbol de directorios que contendrá las actualizaciones.
Ponlo en marcha
Utiliza este script syncRH80.sh por primera vez desde la linea de comandos, como un usuario que tenga permisos de lectura y escritura sobre el árbol de directorios /var/ftp/pub/redhat/linux/updates/8.0/ y pueda ejecutar programas de /usr/local/sbin/. Por ejemplo, este usuario puede ser el usuario BOFH.
[BOFH@updates-aptget ]$ /usr/local/sbin/syncRH80.sh
La primera vez que lo utilices, como se bajará todos los paquetes actualizados que contenga el servidor remoto, tardará un buen rato. Prepárate para ello, disfrutando de tu refresco favorito y dedica este tiempo muerto en culturizarte, hechando unas risas en la Tira Ecol
Cuando acabe la transferencia de archivos, te toca convertir esos directorios en un repositorio "apt-get-izado". Para ello, necesitas los scripts makeapt.sh y genbasedir-0.5 del tar.gz anterior. Sitúalos en /usr/local/sbin/ . Estos scripts los encontré en la web de Tuxfamily, y los adapté a las
necesidades de mis servidores (maravillas de la licencia GPL). Repito, esos scripts están modificados para que funcionen en mi sistema, con los directorios aquí especificados. Una revisión de los scripts con vuestro $EDITOR, os servirá para comprobar las rutas de los ejecutables, las variables utilizadas por los scripts y los directorios usados en los scripts. Adáptalos a tus necesidades.
Cuando los hayas comprobado y editado, apt-get-iza los directórios con la
orden:
[BOFH@updates-aptget ]$ /usr/local/sbin/makeapt.sh all
Tras esta acción, ya puedes añadir a los /etc/apt/sources.list de tus máquinas Red Hat 8.0 unas líneas similares a las siguientes:
# Red Hat Linux 8.0 updates
rpm ftp://updates-aptget.tu-red.org pub/redhat/8.0/en/i386 updates
Estas líneas asumen que tu servidor apt-get-izado se llama
updates-aptget.tu-red.org, que este servidor tiene habilitado el ftp y que usas el mismo árbol de directorios que los explicados en este tutorial.
Ahora, tienes que escribir un pequeño script para que lance el sistema de actualización de tu servidor de updates. Para ello, nada como tener un script llamado /usr/local/sbin/aptsync.sh y que contenga algo como lo siguiente:
----------------- Inicio del Script -----------------
#! /bin/bash
# (C) 2002 Sinner from the Prairy <sinner@escomposlinux.org>
# Este script se ofrece sin garantía alguna.
# Si te funciona, ¡perfecto! Si no te funciona, mala suerte.
# Este script se distribuye bajo la licencia GPL de la FSF
# http://www.fsf.org/licenses/licenses.html
# Este script descarga las actualizaciones de Red Hat 8.0
# en el servidor de updates apt-get-izado.
# Este script lo ejecuta crond, y se dedica a bajarse
# los nuevos paquetes del servidor remoto via rsync
# y luego regenera los ficheros auxiliares
# que lo habilitan como servidor apt-get-izado
echo ----------------------------------
echo Syncing RH 8.0
echo ----------------------------------
/usr/local/sbin/syncRH80.sh
/usr/local/sbin/makeapt3.sh all
# La siguiente parte es opcional. Utilízala si quieres.
# Envio del resultado al email del administrador
cat /home/BOFH/rsync.log | mailto -s "Updates de Red Hat 8.0" BOFH@tu-red.org
----------------- Fin del Script -----------------
Seguidamente, como usuario BOFH (el usuario con permisos de escritura
sobre el árbol de directorios que creamos al principio) editamos el crontab
(recordemos: " crontab -e ") de este usuario BOFH y lo dejamos así:
----------------- Inicio del crontab -----------------
# RH 8.0 updates
-0 20 * * * /usr/local/sbin/rsync.sh > /home/BOFH/rsync.log
----------------- Fin del crontab -----------------
Obsérvese que se hace un hábil uso del comando "mailto". Este programa se encuentra, en el paquete "metamail" (aunque el nombre del paquete puede variar entre distribuciones). Un adecuado uso de google o rpmfind nos ayudarán a localizar el paquete correcto. Y el hábil Libertoniano se dará cuenta que el crond realizará las actualizaciones diariamente a una hora determinada. Cambia el horario de las actualiaciones según te convenga.
Y esto ya está. Ya tenes un potente servidor de updates via apt-get para Red Hat 8.0. Ya puedes ir a ver la imágen del perejil y decir "¡rico, rico".
Para otras versiones de RedHat o para otras distribuciones que usen apt-get, el
sistema es parecido... y lo dejo como ejercicio para el lector (¡siempre quise decir eso!).
Salut,
Sinner