CTM para OpenBSD

¿Qué es CTM?

CTM es un sistema para realizar cambios con intervalos de tiempo regulares a un árbol de fuentes accesible por correo electrónico; CTM ha sido diseñado por Poul-Henning Kamp. Este sistema es un buen modo para estar actualizado con el árbol actual de código fuente (-current) o con el árbol del CVS, sobre todo si la conexión a internet de que dispone es lenta, como puede ser en el caso de una conexión por módem.

OpenBSD CTM distribuye todos los módulos del repositorio de CVS de OpenBSD más versiones sacadas de varios de estos módulos. CTM usa muy poco ancho de banda para distribuir los cambios al árbol, y los comprime usando gzip -9. A diferencia de CVSup, CTM ha sido escrito en C y por lo tanto está disponible en todas las plataformas en las que exista un porte de OpenBSD. El sistema que implementa CTM se diferencia de otros métodos de acceso al repositorio de CVS de OpenBSD en la recepción del código.

Ante cualquier problema, sugerencia, informe o duda sobre CTM, contacte con el mantenedor de CTM, Hans Günter Weigand.
(Por favor, no pregunte a otras personas de OpenBSD por el soporte de CTM, ya que estarán ocupados haciendo otras cosas. Gracias)

¿Cómo funciona?

El principio básico es que Vd. se subscriba a una lista de correo específica para un árbol de fuentes o módulo de CVS en concreto. Cada día recibirá mensajes por correo electrónico que contendrá grupos con todos los cambios acontecidos en ese árbol durante ese periodo. Cada uno de esos grupos de diferencias se conoce como un delta. El servidor de CTM crea nuevas deltas cada doce horas.

Vd. empieza con un grupo inicial o «base» al que se irá aplicando parches con las sucesivas «deltas». Para empezar a usar ctm debe bajarse la última «base» existente y todas las deltas que hayan aparecido hasta ese momento. Una vez que haya aplicado los parches a su base con esas deltas, ya puede empezar un proceso normal con las sucesivas deltas que irá recibiendo por medio de la lista de correo. Las bases están divididas en partes de 1400KB cada una, para que sean más fáciles de transferir por líneas de baja calidad.

Las bases se generan aproximadamente una vez cada 50 deltas, de este modo nunca tendrá que bajarse más de 50 deltas a la vez para poder ponerse al día.

En la actualidad existen dos tipos de archivos de deltas base. Durante bastante tiempo estuvimos creando los ficheros tar.gz a mano, pero ahora hemos vuelto a las deltas base reales. Estas últimas contienen sumas de comprobación md5(1) y se generan de forma automática, por lo que son algo más seguras. Puede distinguir entre los dos tipos de deltas base por el nombre y extensión del archivo. Por ejemplo, un archivo tar.gz sería OpenBSD-cvs.1450.tar.gz, mientras que una base delta sería OpenBSD-cvs.1500A.gz. Más adelante puede ver instrucciones detalladas.

¿Cuánto ancho de banda usa CTM?

El grupo de deltas base y todas las deltas relativas hasta la más reciente se obtienen mediante ftp desde los sitios que se mencionan más adelante. Los tamaños son:

¿Cómo uso CTM?

Nota: Los ejemplos que vienen a continuación sólo hacen referencia a OpenBSD-cvs. El resto de grupos funcionan del mismo modo.

En la siguiente lista puede ver los servidores de FTP que tienen deltas de CTM:

NOTA: Estoy muy interesado en encontrar otros servidores alrededor del mundo que quieran replicar estas deltas. Contacte conmigo.

¿Debo escoger el árbol de fuentes o el repositorio de CVS?

Esto depende del espacio en disco del que disponga, entre otros factores. Como CTM no puede manejar muy bien ficheros que hayan sido modificados fuera del proceso de CTM, la mejor elección es, sin duda, el repositorio de CVS. De este modo puede comprobar su árbol de fuentes actual desde su repositorio de CVS, llevar un seguimiento de la versión -stable, y mantener sus modificaciones locales en su árbol de fuentes. CVS fusionará sin problemas sus cambios locales. También podrá usar todas las órdenes de CVS a excepción de órdenes como cvs commit y cvs tag.

Sin embargo, la parte negativa es que necesitará mucho espacio en disco. Un árbol de fuentes requiere unos 370MB, pero si tiene su propio repositorio de CVS necesitará aproximadamente 1GB para éste, más otros 370MB para el árbol que se haya bajado.

Esto sin tener en cuenta los 100MB o más que necesitará (dependiendo de la arquitectura), para los ficheros generados durante la compilación del código fuente.

Si sólo tiene el árbol de fuentes, tan sólo será necesario tratar modificaciones a nivel local. Un modo de hacerlo es usando el sistema de archivos union, (ver mount_union(8)) aunque existen informes en los que se asegura que el sistema de archivos union puede ser inestable si tanto en las capas superiores como en las inferiores residen en el mismo sistema de archivos físico. Si ubica sus capas superiores e inferiores en sistemas de archivos separados, no debe surgir ningún problema. Un ejemplo de esto es el que sigue a continuación:

Supongamos que su árbol actualizado por CTM se encuentra en /usr/src-ctm, y que su árbol de fuentes real, el que modificó y del que llevó a cabo la compilación, se encuentra en /usr/src. /usr/src debería ser al principio un directorio vacío. La siguiente orden configurará el montaje de "union":

	mount -t union -o -b /usr/src-ctm /usr/src

Las modificaciones que se hayan hecho a los ficheros en /usr/src se convertirán en un fichero dentro de /usr/src, y esconderá el que haya en src-ctm. Si los cambios se hacen mediante CTM al árbol src-ctm, esos cambios no se verán si hay un fichero en la capa superior que lo esconda.

El sistema de archivos "union" se debe desmontar periódicamente, y buscar si hay ficheros locales de "union".

	umount /usr/src
	find /usr/src -type f

Las órdenes ls -W y rm -W también serán de utilidad, ya que los llamados "whiteouts" en /usr/src también esconderán ficheros en src-ctm.

Si tiene el repositorio de CVS, puede usar la orden cvs checkout para obtener el árbol de fuentes desde el anterior, y cada vez que actualice con CTM podrá usar la orden cvs update para actualizar su repositorio de fuentes.

Para obtener un repositorio de fuentes inicial:

	cd /usr
	cvs -qd SU_REPOSITORIO_CVS checkout -P src

y después de cada actualización por CTM:

	cd /usr/src
	cvs -q update -Pd

¿Es CTM estable en OpenBSD?

CTM se ha usado durante algo más de cinco años con OpenBSD, y durante algunos años más para FreeBSD. CTM ofrece mucha fiabilidad y estabilidad.

¿Cuál es el futuro de CTM?

Hay muchas posibilidades de cambios (pequeños) y de optimizaciones. Entre éstos: ¡Envíeme su opinión sobre CTM!

Más información

Si desea saber más sobre CTM, un buen sitio por donde empezar es por la guía de FreeBSD: También existen páginas de manual para todas las utilidades de CTM.

Sumario:

Cualquier anuncio o nota importante sobre CTM se enviará a la lista de correo announce@OpenBSD.org.

Reconocimientos

Logotipo de OpenBSD/CTM diseñado para el proyecto de OpenBSD por Phillip F Knaack.


OpenBSD www@openbsd.org
Originally [OpenBSD: ctm.html,v 1.26 ]
$Translation: ctm.html,v 1.20 2004/09/05 21:13:46 santana Exp $
$OpenBSD: ctm.html,v 1.17 2004/09/06 16:51:03 saad Exp $