[OpenBSD]

CVS Anónimo


Índice de contenidos


Qué es CVS anónimo?

CVS Anónimo es un método para mantener una copia local del árbol de fuentes de OpenBSD, actualizada con respecto a los cambios realizados sobre el código fuente existente en OpenBSD-current (la versión de desarrollo). Además de poder seguir el hilo del desarrollo, también se puede hacer un seguimiento de los parches para los errores de una versión final (-release).

La mayor ventaja de CVS Anónimo sobre otras técnicas de actualización de código fuente, es que funciona directamente contra un repositorio o réplica central del código fuente. Esto quiere decir que se pueden usar todas las órdenes disponibles de CVS para controlar la fusión y actualizar los cambios que se apliquen con otros cambios en los fuentes, y para obtener ficheros diff, cambiar historiales y llevar a cabo otras acciones contra el repositorio central.

El Proyecto OpenBSD dispone en la actualidad de cinco repositorios principales de fuentes:

En resumen, el poder real de usar CVS anónimo es que éste es un sistema de control de código fuente «tolerante»; respeta los cambios que el usuario ha llevado a cabo en sus fuentes locales y se esfuerza en actualizar el árbol completo de fuentes del usuario, en lugar de dejar una lista de problemas arcanos que deberán ser resueltos antes de continuar.

¿Qué es CVS?

CVS es el sistema de control de código fuente que se usa para gestionar el árbol de fuentes de OpenBSD. Implementa un repositorio central para todas las revisiones oficiales y todos los cambios en el código fuente, mientras permite que los desarrolladores mantengan copias locales del código fuente con los cambios que éstos hayan aplicado. Los desarrolladores con «permiso de acceso con escritura» pueden entregar los cambios realizados directamente al árbol de fuentes de OpenBSD, mientras que los usuarios de «CVS anónimo» disponen de «permiso de acceso con lectura» y pueden mantener sus copias locales de los fuentes actualizadas y realizar búsquedas y consultas en el repositorio central.

La mayor ventaja de CVS es la de ser capaz de llevar a cabo fusiones inteligentes de los cambios que se hayan producido en el repositorio central, con los cambios que haya llevado a cabo el usuario en su copia local. O dicho de otro modo, si Vd. efectuara un cambio en un módulo y llevara a cabo una actualización, sus cambios no serían rechazados, sino que CVS se esforzaría en fusionarlos con los del repositorio central.

En el supuesto caso en que los cambios no pudieran ser completamente fusionados, CVS le enviaría los cambios a su copia local con comentarios sobre éstos, preservando un copia intacta de su versión y continuando con la actualización del resto de módulos que Vd. hubiera requerido.

Primeros pasos con AnonCVS

La última versión de CVS está disponible en Cyclic. Se recomienda no usar versiones anteriores a la 1.6, ya que es probable que no funcionen. Si ya tiene OpenBSD instalado, CVS viene incluido como parte integral de la instalación del sistema.

Aquellos usuarios que dispongan de un CD de OpenBSD puede que hayan visto los directorios CVS en él; existe una razón para esto: el CD contiene una parte del módulo src de OpenBSD que sirve para continuar la actualización desde ella. Si usa este árbol, la actualización inicial de CVS será más rápida que si actualizara todo el árbol de fuentes de OpenBSD partiendo desde cero. Hay dos modos de usar el CD:

Quienes no tengan un CD a mano pueden usar cvs(1) para «descargar» el repositorio de fuentes. Este método se discute en la próxima sección.

Después de esto, /usr/src será una buena área de descarga en donde todas las órdenes de cvs(1) funcionarán sin problemas.

Cómo bajar y actualizar el árbol de fuentes usando CVS

CVS se diseñó para que fuera un modo sencillo de bajarse y actualizar los fuentes, y por tanto no es difícil usarlo. Antes de nada debe decidir si va a llevar un seguimiento de la versión en desarrollo (-current) o de una versión estable, la rama parcheada (-stable). El árbol de la versión en desarrollo contiene todos los cambios hechos hasta el último minuto, mientras que una rama parcheada contiene una versión final (-release) más los parches aplicados de errata. Puede ver una definición de -current en las preguntas frecuentes sobre la actualización.

Una vez que haya decidido qué árbol seguir, debe escoger qué servidor de CVS anónimo va a usar. Hay una lista de estos servidores en estas páginas. Sin embargo, note que hay tres modos de acceder a estos servidores:

ssh
`Secure Shell'. Es el modo recomendado para acceder a los servidores de CVS anónimo, ya que utiliza cifrado. Desde OpenBSD 2.6, OpenSSH viene incluido como parte integral de la distribución normal de OpenBSD.
rsh
`Remote Shell'. Se puede utilizar en algunos de los servidores para los usuarios que no dispongan de acceso a ssh.
pserver
`pserver'. Es útil principalmente para usuarios que se encuentren detrás de cortafuegos que bloqueen las otras dos conexiones.

NOTA: Los usuarios que deseen usar rsh, primero deben configurar la variable CVS_RSH para rsh.

Una vez que haya escogido qué Servidor de CVS anónimo va a usar y qué método utilizará, podrá empezar a usar cvs. Quienes dispongan de los CDs pueden empezar con la descarga de CVS existente en el CD usando el método antes mencionado para bajar los fuentes a su sistema. Este método pone el árbol de fuentes de OpenBSD en /usr/src.

	# cd /usr; cvs checkout -P src

La línea de órdenes anterior descargará el código fuente del árbol de desarrollo (-current). Muchos usuarios sólo necesitarán los fuentes de una rama parcheada (-stable). Para obtener una rama parcheada, debe especificarlo con una etiqueta en la orden de cvs. Por ejemplo:

	# cd /usr; cvs checkout -P -rOPENBSD_3_4 src

O OPENBSD_3_3 para 3.3, etc...

En este momento sólo la etiqueta OPENBSD_3_4 contiene el código fuente de la versión final (-release) con los parches de errata aplicados.

Servidores anónimos de CVS disponibles

Existen dos niveles de acceso al árbol de fuentes:

Acceso de lectura/escritura para desarrolladores:
Los desarrolladores que necesiten enviar cambios al árbol de fuentes deben disponer de una cuenta en las máquinas de OpenBSD. La obtención de este acceso es el resultado de su trabajo sobre los fuentes con otros desarrolladores de OpenBSD. Si alguien hace un buen trabajo y demuestra que puede trabajar con el equipo, entonces obtendrá una cuenta.
Acceso de sólo-lectura para todos:
Cualquiera puede acceder con permiso de sólo lectura a los repositorios de CVS. Las copias del repositorio principal de CVS de sólo lectura se replican con frecuencia. Para poder usarlas, configure su variable de entorno CVSROOT con uno de los siguientes valores:

¡Por favor, lea la nota sobre el uso de ssh vs. rsh!

Nota: Si su servidor se encuentra en esta lista con información inexacta o errónea, por favor contacte con beck@openbsd.org

Para saber qué servidor se encuentra geográficamente más cerca de Vd. puede usar traceroute(8). Para los problemas que puedan surgirle con algún servidor debe dirigirse al mantenedor del servidor en cuestión.

Obtención de código criptográfico por cvs(1)

NOTA IMPORTANTE: Hay algunos temas relacionados con el software criptográfico que todos deberían conocer:

Ejemplo de utilización de cvs(1)

AVISO: Si quisiera actualizar una versión estable de parches (-stable) con la versión de desarrollo (-current), tendría que añadir el indicador -A a la orden cvs; en cualquier otro caso este indicador es de poca utilidad. Algunas versiones ya antiguas de la documentación de OpenBSD recomendaban el uso de este indicador en muchos de sus ejemplos. En la actualidad ya no se recomienda este indicador a menos que sea absolutamente necesario.

Un ejemplo del uso de un servidor de CVS anónimo sería:

% setenv CVSROOT anoncvs@anoncvs.ca.openbsd.org:/cvs
% cd /tmp
% cvs get src/sys/arch/sparc
    [copia los ficheros desde el repositorio a su máquina]
% cvs log src/sys/arch/sparc/sparc/locore.s
    [muestra el log de entrega del fichero que se escoja]
% cvs diff -bc -r1.1 -r1.5 src/sys/arch/sparc/sparc/locore.s
    [muestra los cambios entre las revisiones 1.1 y 1.5]

Para usar un cvs ``pserver'' (una conexión TCP directa en lugar de usar ssh o rsh) debe efectuar el ingreso (login) en el servidor una sola vez:

% setenv CVSROOT :pserver:anoncvs@anoncvs.ca.openbsd.org:/cvs
% cvs login
(Logging in to anoncvs@anoncvs1.ca.openbsd.org)
CVS password: anoncvs
    [escribe un línea en ~/.cvspass (nombre del fichero anulado por CVS_PASSFILE)]
    [Un línea de ejemplo de mi ~/.cvspass después de escribir 'blah' en la contraseña anterior es:
    :pserver:anoncvs@anoncvs5.usa.openbsd.org:/cvs Au'yc
    ...después del primer ingreso de login funcionarán el resto de órdenes
    del CVSROOT visto anteriormente]
% cvs get ksrc-i386 ksrc-common
    [le permite bajar SÓLO lo necesario para reconstruir un núcleo para i386]

Un ejemplo de cómo alguien que usara anoncvs con regularidad actualizaría su árbol de fuentes:

El uso de los portes es parecido al de los fuentes:

En el ejemplo anterior -q es opcional, y sólo sirve para minimizar los mensajes en pantalla de cvs. Aquéllos que quieran ver pantallas llenas de mensajes lo pueden omitir.

O para obtener un diff de un módulo local parcheado (en el ejemplo siguiente cd.c) para incluirlo con un informe de error:

	# cd /usr
	# cvs diff -u src/sys/scsi/cd.c > /tmp/patch

La página del manual de cvs(1) (incluida con los fuentes de CVS) tiene mucha más información sobre cómo se puede usar CVS.

Árbol de fuentes de X11

Las réplicas de anoncvs también disponen del árbol de fuentes de X11 (XFree86) de OpenBSD. Puede adaptar las órdenes anteriores para actualizar su árbol de fuentes de XFree86 desde el tercer CD. Para ello, puede copiar el ábol de fuentes de XFree86 3 desde el CD o bajárselo con el módulo cvs de X11, aunque el módulo actual que contiene XFree86 es el de XF4. Hay dos maneras de copiar el código fuente de XF4 en /usr/XF4:

Después de esto, /usr/XF4 estará preparado para ser usado por cvs. Por ejemplo, puede actualizarlo con los fuentes de la versión en desarrollo (se asume que ya ha configurado la variable de entorno CVSROOT):

        # cd /usr/XF4
        # cvs -q update -Pd

Aviso: Cuando use cvs debe asegurarse que su directorio actual sea el directorio raíz del árbol que tome como referencia, o que sea en un sitio aparte como /tmp. Algunas órdenes como "get" pueden crear un «sub-árbol» en el directorio actual y una actualización posterior producirá, de modo recursivo, información sobre este «sub-árbol».

El servicio anoncvs ofrece a los desarrolladores la oportunidad de aprender a operar con CVS y a meterse de lleno en el proceso de desarrollo antes de obtener acceso absoluto; como resultado de buenas habilidades y resultados de alta calidad, se les otorgará en su momento acceso de desarrollador. También aquéllos que entreguen parches pueden crear sus ficheros diff relativos al árbol de CVS, lo que facilitará la integración.

¿rsh(1) o ssh(1)?

Anoncvs: rsh vs. ssh

El programa cliente de CVS usa ssh ("secure shell", OpenSSH) de forma predeterminada para comunicarse con el programa servidor de CVS.

Muchos de los sitios con CVS ya no ofrecen soporte para rsh por motivos de seguridad. Algunos problemas locales como los cortafuegos o emuladores de protocolos imperfectos (como slirp) también pueden ser un impedimento para la utilización de rsh. Sin embargo, si desea usar rsh, debe configurar la variable de entorno CVS_RSH para que apunte a rsh (suele estar en /usr/bin/rsh).

Si algún tipo de política local deniega las conexiones salientes por el puerto 22 de ssh, puede usar el puerto 2022 en su lugar. Pero tenga en cuenta que no todos los servidores de anoncvs aceptan conexiones por este puerto. Es más, la mayoría de servidores de anoncvs ya no aceptan el cifrado none, ya que éste ha sido desactivado en versiones recientes de ssh por motivos de seguridad. Tampoco intente activar la compresión, porque CVS ya utiliza compresión.

Para evitar los problemas y restricciones que se mencionan arriba, se puede especificar algo como lo siguiente en $HOME/.ssh/config:

	Host anoncvs.ca.openbsd.org
	    Compression no
	    Port 2022

El inicio de CVS es un poco ruidoso; para silenciarlo un poco puede hacer lo siguiente:

	setenv CVS_CLIENT_PORT -1

Cómo replicar el repositorio de CVS mediante sup(1)

Los usuarios que quieran replicar el árbol de CVS de OpenBSD, pueden hacerlo desde anoncvs.usa.openbsd.org o anoncvs1.usa.openbsd.org (son servidores diferentes). Éste es el árbol de CVS, no una copia del árbol de fuentes. Sólo le será útil para poder llevar a cabo operaciones rápidas de cvs (diff, annotate, etc...), o si tiene múltiples árboles de fuentes y sólo quiere transferir nuevos datos una vez (entonces puede obtener una copia del árbol desde su réplica local de cvs).

Un fichero sup (supfile) de ejemplo sería:

       cvs host=anoncvs.usa.openbsd.org hostbase=/ base=/home delete

que replicaría el árbol de cvs en /home/cvs con los ficheros de datos de sup en /home/sup. El árbol de cvs completo de OpenBSD ocupa en la actualidad 2.2GB aproximadamente.

Cómo configurar una nueva réplica de anoncvs

Si desea que su servidor sea un réplica nueva de anoncvs, por favor contacte con el mantenedor de anoncvs. Las réplicas de anoncvs requieren alrededor de 2.2GB de espacio en disco, y hacen uso de hasta 32MB de memoria de intercambio por cada usuario de anoncvs (suponiendo que el usuario haga una operación grande; aunque las operaciones más pequeñas usan menos recursos, el impacto de las operaciones de cvs sigue siendo mayor que las de ftp o sup). Por tanto, las máquinas para anoncvs deberían estar dotadas de una excelente conexión de red para el área que van a servir. Existe un documento que describe la configuración de servidores anoncvs.

Notas finales:

Después de actualizar el árbol de fuentes, es necesario leer los comentarios al principio de /usr/src/Makefile antes de intentar compilar. También se debe compilar un nuevo núcleo antes de hacer un make build si es posible. En algunos casos puede ser necesario recompilar e instalar la utilidad config antes de compilar el núcleo. Si config GENERIC falla, es probable que se deba a esto último.

Es importante saber que la actualización desde una revisión al árbol actual, recompilando los fuentes, puede ser bastante difícil debido a las dependencias que a menudo no son claras. Por lo tanto, sugerimos que instale primero la última versión preliminar (snapshot) antes de intentar compilar un árbol desde los fuentes.


OpenBSD www@openbsd.org
Originally [OpenBSD: anoncvs.html,v 1.197 ]
$Translation: anoncvs.html,v 1.70 2003/12/30 11:44:32 horacio Exp $
$OpenBSD: anoncvs.html,v 1.67 2004/01/01 23:26:53 horacio Exp $