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)
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.
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:
Hay varias listas de correo relacionadas con CTM. Existe una lista para las actualizaciones del repositorio de CVS, una lista para el árbol de fuentes, una lista para las actualizaciones de X11 de los anteriores, una lista para el árbol de portes, y una lista para los registros "log" del generador CTM de deltas.
Las siguientes órdenes le darán de alta en las listas apropiadas:
Para el repositorio de CVS (los módulos CVSROOT, ports, src y www pero no los módulos X11 y XF4):
echo subscribe OpenBSD-cvs | mail majordomo@OpenBSD.orgPara el módulo X11 del repositorio de CVS:
echo subscribe OpenBSD-cvs-x11 | mail majordomo@OpenBSD.orgPara el módulo XF4 del repositorio de CVS:
echo subscribe OpenBSD-cvs-xf4 | mail majordomo@OpenBSD.orgPara una copia del módulo src:
echo subscribe OpenBSD-src | mail majordomo@OpenBSD.orgPara una copia del módulo X11:
echo subscribe OpenBSD-src-x11 | mail majordomo@OpenBSD.orgPara una copia del módulo ports:
echo subscribe OpenBSD-ports-ctm | mail majordomo@OpenBSD.orgPara la lista de registros ("log") de CTM:
echo subscribe ctm-log | mail majordomo@OpenBSD.org
cat split/OpenBSD-cvs.1500A.gz.* > OpenBSD-cvs.1500A.gz cd target ctm -v -v -v .../OpenBSD-cvs.1500A.gz
ó
cat split/OpenBSD-cvs.1450.tar.gz.* > OpenBSD-cvs.1450.tar.gz cd target tar -xzvf .../OpenBSD-cvs.1450.tar.gz
en donde split es el directorio en el que ha copiado los archivos que se bajó, y target es el sitio que ha escogido para desempaquetar el archivo.
No es necesario que conserve estos grupos de archivos base, siempre que esté seguro de que tiene un árbol completo. Pero puede conservar el grupo de archivos base como copia de seguridad. De cualquier modo asegúrese de anotar el número del grupo de bases antes de continuar.
cd target ctm -v -v -v deltas/OpenBSD-cvs.*
en donde target es el directorio en el que se encuentra su árbol de fuentes, y deltas es el directorio en el que ha guardado las deltas.
ctm_rmail.
ctm_rmail -p /tmp -d deltas -b target folder
en donde folder es el buzón de correo que contiene el mensaje con la delta. Esto descodificará la delta de CTM y la guardará en el directorio deltas. La delta será un archivo de la forma OpenBSD-cvs.XXXX.gz, en donde XXXX es el número de la delta. A continuación se aplicará la delta al árbol del directorio ubicado en target, que es el sitio en el que desarchivó el grupo base anteriormente.
Repita este último paso cada vez que reciba una delta desde la lista de distribución. Si lo desea, puede automatizar este paso usando procmail, maildrop, o algún otro programa parecido de la colección de portes.
En la siguiente lista puede ver los servidores de FTP que tienen deltas de CTM:
ftp://openbsd.rug.ac.be:/pub/OpenBSD-ctm/.
Este servidor se actualiza de forma automática durante el proceso de generación de deltas de CTM. Los grupos básicos se encuentran disponibles en forma de archivos únicos de gran tamaño en el directorio base. Los archivos divididos están ubicados en el directorio base-split.
Este servidor se actualiza con las deltas de CTM recibidas en las listas de correo. Además contiene las deltas base divididas en el subdirectorio base, que es una réplica de ftp://openbsd.rug.ac.be:/pub/OpenBSD-ctm/.
es idéntico a
y es una réplica de ftp://ctm.se.OpenBSD.org.
NOTA: Estoy muy interesado en encontrar otros servidores alrededor del mundo que quieran replicar estas deltas. Contacte conmigo.
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
Cualquier anuncio o nota importante sobre CTM se enviará a la lista de correo announce@OpenBSD.org.
Logotipo de OpenBSD/CTM diseñado para el proyecto de OpenBSD por Phillip F Knaack.