CTM para OpenBSD

¿Qué es CTM?

CTM es un sistema para realizar cambios a diario 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 los fuentes en "current" o con el árbol del CVS, sobre todo si la conexión a internet de que disponemos no es buena, como por ejemplo con modem.

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 para las que existe un porte de OpenBSD.

¿Cómo funciona?

El principio básico es que Vd. se subscriba a una lista de correo específica para un árbol de fuentes particular. Cada día recibirá un mensaje por correo electrónico que contendrá todos los cambios acontecidos en ese árbol durante ese periodo. Un grupo de diferencias se conoce como un «delta».

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 y para que las pueda copiar en disquetes tal cual están.

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 deltas base. Durante bastante tiempo estuvimos haciendo los ficheros tar.gz a mano, pero ahora estamos volviendo a las deltas base reales. Estas últimas contienen sumas de comprobación md5 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 fichero. Por ejemplo, un fichero 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:

Las actualizaciones por ctm más grandes son raras, aunque pueden ocurrir si ha habido una actualización importante como binutils, perl, gcc, etc...

¿Cómo uso CTM?

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

Las direcciones de ftp para las deltas son:

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

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

    Esto depende del espacio en disco del que disponga, entre otros factores. Como ctm todavía no puede manejar ficheros que hayan sido modificados fuera del proceso de ctm, tal vez la mejor elección sea el árbol de CVS. De este modo puede comprobar su árbol de fuentes actual desde su árbol de CVS, y mantener su modo local en su árbol de fuentes, dejando que sólo ctm toque su árbol de fuentes.

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

    Esto sin tener en cuenta los 100MB o más que necesitará para una compilación (dependiendo de la arquitectura).

    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, aunque han habido informes en los que se aseguraba 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 árbol 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 árbol de fuentes.

    Para obtener un árbol de fuentes inicial:

    	cd /usr
    	cvs -qd YOUR_CVS_TREE checkout -A src
    

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

    	cd /usr/src
    	cvs -q update -PAd
    

    ¿Es CTM estable en OpenBSD?

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

    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.

    También puede contactar con las listas de correo de OpenBSD o conmigo si tiene dificultades con ctm, aunque mi tiempo libre suele ser bastante limitado.

    Sumario:

    Cualquier anuncio o nota importante sobre ctm se enviará a:

    Reconocimientos

    Para cualquier problema, duda, sugerencia o informe relacionado con ctm, contacte con el mantenedor de ctm Hans Günter Weigand.

    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.13 2001/01/01 22:01:21 naddy Exp ]
    $Translation: ctm.html,v 1.9 2001/01/02 16:50:16 horacio Exp $
    $OpenBSD: ctm.html,v 1.6 2001/01/04 05:17:59 jufi Exp $