Tomando Los Fuentes Vía CVSup

Una alternativa al uso de CVS anónimo para recuperar el árbol fuente de Postgres es CVSup. CVSup fué desarrollado por John Polstra para distribuir repositorios CVS y otro árboles de ficheros para El proyecto FreeBSD.

Una ventaja importante de utilizar CVSup es que puede replicar de forma eficaz el repositorio entero en su sistema local, permitiendo un acceso local rápido a las operaciones de cvs como log y diff. Otras ventajas incluyen sincronización rápida al servidor de Postgres debido a un eficiente protocolo de transferencia de cadenas que sólo envía los cambios desde la última actualización.

Preparando un Sistema Cliente CVSup

Se requieren dos áreas para que CVSup pueda hacer su trabajo: un repositorio local de CVS (o simplemente un área de directorios si usted está tomando una foto fija (snapshot) en lugar de un repositorio; vea más abajo) y área local de anotaciones de CVSup. Estas dos áreas pueden coexistir en el mismo árbol de directorios.

Decida donde quiere usted conservar su copia local del repositorio CVS. En uno de nuestros sistemas, recientemente hemos instalado un repositorio en /home/cvs/, pero anteriormente lo teníamos bajo un árbol de desarrollo de Postgres en /opt/postgres/cvs/. Si desea usted mantener su repositorio en /home/cvs/, incluya

setenv CVSROOT /home/cvs
    
en su fichero .cshrc, o una línea similar en su fichero .bashrc o .profile, dependiendo de su shell.

Se debe inicializar el área del repositorio de cvs. Una vez que se fija CVSROOT, se puede hacer esto con un único comando:

$ cvs init
    
tras lo cual, debería usted ver al menos un directorio llamado CVSROOT cuando liste el directorio CVSROOT:
$ ls $CVSROOT
CVSROOT/
    

Ejecutando un Cliente CVSup

Verifique que cvsup se encuentra en su path; en la mayoría de los sistemas, puede usted hacer esto tecleando

which cvsup
    
Entonces, simplemente ejecute cvsup utilizando:
$ cvsup -L 2 postgres.cvsup
    
donde -L 2 activa algunos mensajes de status para que pueda usted monitorizar el progreso de la actualización, y postgres.cvsup es la ruta y el nombre que usted ha dado a su fichero de configuración de CVSup.

Aquí le mostramos un ficheros de configuración de CVSup modificado para una instalación específica, y que mantiene un repositorio CVS local completo: (N. del T: voy a traducir los comentarios a modo de documentación del fichero. Obviamente, no traduciré los comandos, lo que puede dar una imagen algo complicada, pero me parece que puede valer la pena. Agradeceremos sus comentarios a doc-postgresql-es@hispalinux.es)

# Este fichero representa el fichero de distribución estandar de CVSup
# para el proyecto de ORDBMS PostgreSQL.
# Modificado por lockhart@alumni.caltech.edu 1997-08-28
# - Apunta a mi foto fija local del árbol fuente.
# - Recupera el repositorio CVS completo, y no sólo la última actualización.
#
# Valores de defecto que se aplican a todas las recolecciones.
*default host=postgresql.org
*default compress
*default release=cvs
*default delete use-rel-suffix
# activar la línea siguiente para tomar la última actualización.
#*default tag=.
# activar la línea siguiente para tomar todo lo que se ha especificado antes
# o por defecto en la fecha especificada a continuación.
#*default date=97.08.29.00.00.00

# el directorio base apunta a donde CVSup almacenará sus ficheros de marcas.
# creará un subdirectorio sup/
#*default base=/opt/postgres # /usr/local/pgsql
*default base=/home/cvs

# el directorio prefijo apunta a donde CVSup almacenará la/s distribución/es actuales.
*default prefix=/home/cvs

# la distribución completa, incluyendo todo lo siguiente.
pgsql

# distribuciones individuales contra 'el paquete completo'
# pgsql-doc
# pgsql-perl5
# pgsql-src

   

El siguiente fichero de configuración de CVSup se sugiere en el servidor ftp de Postgres y descargará únicamente la foto fija actual:

# Este fichero representa el fichero de distribución estandar de CVSup
# para el proyecto de ORDBMS PostgreSQL.
#
# Valores de defecto que se aplican a todas las recolecciones, a todas las descargas.
*default host=postgresql.org
*default compress
*default release=cvs
*default delete use-rel-suffix
*default tag=.

# el directorio base apunta a donde CVSup almacenará sus ficheros de marcas.
*default base=/usr/local/pgsql

# el directorio prefijo apunta a dnde CVSup almacenará las distribuciones actuales.
*default prefix=/usr/local/pgsql

# distribución completa, incluyendo todo lo siguiente.
pgsql

# distribuciones individuales contra 'el paquete completo'
# pgsql-doc
# pgsql-perl5
# pgsql-src

    

Instalando CVSup

CVSup se puede adquirir como ficheros fuentes, binarios preconstruidos o RPM,s de Linux. Es mucho más facil utilizar un binario que construirlo a partir de los fuentes, principalmente porque el compilador Modula-3, muy capaz pero también muy voluminoso, se necesita para la construcción.

Instalación a partir de Binarios de CVSup

Puede usted utilizar los binarios si tiene una plataforma para la que los binarios se hayan remitido al servidor ftp de Postgres, o si está usted utilizando FreeBSD, para el que CVSup está disponible como una adaptación (porting).

Nota

CVSup fue desarrollado originariamente como una herramienta para la distribución del árbol fuente de FreeBSD. Está disponible como una adaptación, y para aquellos que utilizan FreeBSD, si esto no es suficiente para decirles como obtenerlo e instalarlo, les agradeceremos que nos aporten un procedimiento eficaz.

En el momento de escribir, se disponen binarios para Alpha/Tru64, ix86/xBSD, HPPA/HPUX-10.20, MIPS/irix, ix86/linux-libc5, ix86/linux-glibc, Sparc/Solaris, and Sparc/SunOS.

  1. Adquiera el fichero tar con los binarios para cvsup (cvsupd no se requiere para ser un cliente) adecuado para su plataforma.

    1. Si utiliza usted FreeBSD, instale la adaptación de CVSup.

    2. Si tiene usted otra plataforma, localice y descargue los binarios apropiados desde el servidor ftp de Postgres.

  2. Compruebe el fichero tar para verificar el contenido y la estructura de directorios, si la hay. Al menos para el fichero tar de linux, los binarios estáticos y las páginas man se incluyen sin ningún empaquetado de directorios.

    1. Si el binario se encuentra en el nivel superior del fichero tar, simplemente desempaquete el fichero tar en su directorio elegido:

      $ cd /usr/local/bin
      $ tar zxvf /usr/local/src/cvsup-16.0-linux-i386.tar.gz
      $ mv cvsup.1 ../doc/man/man1/
      	

    2. Si hay una estructura de directorios en el fichero tar, desempaquete el fichero tar en /usr/local/src, y mueva los binarios a la dirección adecuada como antes.

  3. Asegúrese de que los nuevos binarios se encuentran en su path.

    $ rehash
    $ which cvsup
    $ set path=(path a cvsup $path)
    $ which cvsup
    /usr/local/bin/cvsup
          

Instalación a partir de los Fuentes.

La instalación a partir de los fuentes de CVSup no es totalmente trivial, principalmente porque la mayoría de sistemas necesitarán antes el compilador Modula´3. Este compilador se encuentra disponible como RPM de Linux, como paquete FreeBSD, o como código fuente.

Nota

Una instalación limpia de Modula-3 se lleva aproximadamente 200 MB de espacio en disco, de los que se pueden recuperar unos 50 MB cuando se borren los fuentes.

Instalación en Linux

  1. Instale Modula-3.

    1. Tome la distribución de Modula-3 desde Polytechnique Montréal, quien mantiene activamente el código base originalmente desarrollado por the DEC Systems Research Center. La distribución RPM "PM3" está comprimida aproximadamente unos 30 MB. En el momento de escribir, la versión 1.1.10-1 se instalaba límpiamente en RH-5.2, mientras que la 1.1.11-1 estaba construída aparentemente para otra versión (¿RH-6.0?) y no corría en RH-5.2.

      Sugerencia

      Este empaquetado rpm particular tiene muchos ficheros RPM, de modo que seguramente quiera usted situarlos en un directorio aparte.

    2. Instale los rpms de Modula-3:

      # rpm -Uvh pm3*.rpm
      	

  2. Desempaquete la distribución de cvsup:

    # cd /usr/local/src
    # tar zxf cvsup-16.0.tar.gz
          

  3. Construya la distribución de cvsup, suprimiento la interface gráfica para evitar la necesidad de las librerías X11:

    # make M3FLAGS="-DNOGUI"
          
    Y si quiere construir un binario estático para trasladarlo a sistemas en los cuales no pueda tener instalado Modula-3, intente:
    # make M3FLAGS="-DNOGUI -DSTATIC"
          

  4. Instale el binario construido:

    # make M3FLAGS="-DNOGUI -DSTATIC" install