F.3. Obtenir les sources via CVSup

Une alternative au CVS anonyme pour obtenir l'arbre source de PostgreSQL est CVSup. CVSup a été développé par John Polstra () pour distribuer des arbres de référence CVS et d'autres arborescences de fichiers pour le projet FreeBSD.

Un des avantages majeurs de CVSup est qu'il peut répliquer fiablement la totalité du référentiel CVS sur votre système local, ce qui permet un accès rapide aux opérations CVS comme log ou diff. Autre avantage, la synchronisation efficace avec le serveur PostgreSQL grâce à un protocole de flux de transfert qui ne transmet que les différences depuis la dernière mise à jour.

F.3.1. Préparer un système client CVSup

Deux groupes de répertoires sont nécessaires à CVSup : un répertoire contenant le référentiel CVS local (ou simplement un groupe de répertoires si vous ne récupérez qu'un extrait plutôt que le référentiel complet ; voir plus loin) et une zone dans laquelle CVSup enregistre ses propres données. Ces deux groupes de répertoires peuvent coexister dans la même arborescence.

Décidez où vous souhaitez garder votre copie locale du référentiel CVS. Sur un de nos systèmes, nous avons récemment créé un référentiel dans /home/cvs/, mais nous avions jusque là utilisé /opt/postgres/cvs/ comme arbre de développement pour PostgreSQL. Si vous souhaitez placer votre référentiel dans /home/cvs/, alors ajoutez

setenv CVSROOT /home/cvs
    

dans votre fichier .cshrc, ou une ligne similaire dans votre .bashrc ou dans votre .profile, en fonction de votre interpréteur de commandes (shell).

La zone de référentiel de cvs doit être initialisée. Une fois que CVSROOT est initialisée, il suffit de faire :

$ cvs init
    

après quoi vous devriez au moins voir un répertoire CVSROOT en listant le répertoire CVSROOT :

$ ls $CVSROOT
CVSROOT/
    

F.3.2. Utiliser un client CVSup

Vérifiez que cvsup est dans votre chemin. Sur la plupart des systèmes, cela se fait en tapant

which cvsup
    

Puis, lancez simplement cvsup en faisant :

$ cvsup -L 2 postgres.cvsup
    

-L 2 active certains messages de statut pour vous permettre de suivre le progrès pour la mise à jour et postgres.cvsup est la chemin et le nom que vous avez donné à votre fichier de configuration CVSup.

Voici un fichier de configuration CVSup modifié pour une installation spécifique, et maintient un référentiel CVS local complet.

# Ce fichier représente le fichier de distribution CVSup standard
# pour le projet de SGBDRO PostgreSQL
# Modifié par lockart@fourpalms.org 1997-08-28
# - Pointe vers mon arborescence de référence locale
# - Extrait le référentiel CVS complet, pas seulement la
#   dernière version
#
#Valeurs par défaut qui s'appliquent à toutes les collections
*default host=cvsup.postgresql.org
*default compress
*default release=cvs
*default delete use-rel-suffix
# Activez la ligne suivante pour récupérer la dernière version
#*default tag=.
# Activez la ligne suivante récupérer ce qui est précisé en dessus ou 
# par défaut à la date précisée en dessous
#*default date=97.08.29.00.00.00

# répertoire de base où CVSup stocke ses fichiers 'marque page'
# créera un sous répertoire sup/
#*default base=/opt/postgres # /usr/local/pgsql
*default base=/home/cvs

# répertoire préfixe où CVSup stocke les distributions.
*default prefix=/home/cvs

# Distribution complète, avec tout ce qui est en dessous
pgsql

# distributions partielles
# pgsql-doc
# pgsql-perl5
# pgsql-src

   

Ce qui suit est une suggestion de fichier de configuration CVSup issu du site ftp de PostgreSQL, qui ne récupère que la version courante :

# Ce fichier représente la distribution CVSup standard pour le
# projet de SGBDRO PostgreSQL.
#
# Valeurs par défaut qui d'appliquent à toutes les collections.
*default host=cvsup.postgresql.org
*default compress
*default release=cvs
*default delete use-rel-suffix
*default tag=.

# répertoire de base où CVSup stocke ses fichiers 'marque page'
*default base=/usr/local/pgsql

# répertoire préfixe où CVSup stocke les distributions.
*default prefix=/usr/local/pgsql

# Distribution complète, avec tout ce qui est en dessous
pgsql

# distributions partielles
# pgsql-doc
# pgsql-perl5
# pgsql-src

    

F.3.3. Installer CVSup

CVSup est disponible sous forme de fichiers source, de binaires pré-compilés ou de RPM Linux. Il est beaucoup plus simple d'utiliser les binaires plutôt que de compiler les sources, principalement parce que cela nécessite le compilateur Modula-3, qui est très puissant mais volumineux.

Installation de CVSup à partir des fichier binaires

Vous pouvez utiliser les binaires pré-compilés si vous avez une plate-forme pour laquelle les binaires sont postés sur le site ftp de PostgreSQL, vous pouvez ou si avez FreeBSD, pour lequel CVSup est disponible comme << portage >>.

Note : CVSup a été initialement développé pour distribuer l'arbre des sources de FreeBSD. Il est disponible comme << portage >>, et pour ceux qui ont FreeBSD, si cela n'explique pas suffisamment comment obtenir et installer CVSup, merci d'ajouter une procédure ici.

Au moment de l'écriture de ce chapitre, des binaires sont disponibles pour : Alpha/Tru64, ix86/xBSD, HPPA/HP-UX 10.20, MIPS/IRIX, ix86/linux-libc5, ix86/linux-glibc, Sparc/Solaris et Sparc/SunOS.

  1. Récupérez l'archive tar des binaires cvsup (cvsupd n'est pas nécessaire pour être un client) approprié pour votre plate-forme.

    1. Si vous avez FreeBSD, installez le portage CVSup.

    2. Si vous avez une autre plate-forme, vérifiez et télécharger le binaire approprié du site ftp PostgreSQL.

  2. Vérifiez dans l'archive tar les contenus et la structure de répertoires. Pour le tar Linux au moins, le binaire statique et la page de manuel sont inclues sans répertoires.

    1. Si le binaire est au plus haut niveau du fichier tar, alors il suffit d'extraire le fichier tar dans le répertoire cible :

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

    2. S'il y a une structure de répertoires dans le fichier tar, alors extrayez le dans /usr/local/src et déplacez les binaires dans le répertoire approprié, comme indiqué ci-dessus.

  3. Assurez-vous que les nouveaux binaires sont dans votre chemin.

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

F.3.4. Installation à partir des sources

Installer CVSup n'est pas entièrement trivial, principalement parce que la plupart des systèmes auront besoin du compilateur Modula-3. Ce compilateur est disponible sous forme de RPM Linux, de paquetage FreeBSD ou de code source.

Note : Une installation de Modula-3 avec les sources prend environ 200 Mo d'espace disque, qui redescendent ensuite à environ 50 Mo lorsque les sources sont supprimées.

Installation sur Linux

  1. Installer Modula-3.

    1. Récupérer la distribution de Modula-3 à Polytechnique Montréal, qui maintient activement le code initialement développé par le centre de recherches système de DEC. La distribution PM3 sous forme de RPM fait environ 30 Mo compressée. Au moment de l'écriture de ce document, la version 1.1.10-1 s'installe sans problème sur RH-5.2, alors que la version 1.1.11-1 est apparemment prévue pour une autre version (RH-6.0?) et ne fonctionne pas sous RH-5.2.

      Astuce : Cette distribution rpm spécifique a de nombreux fichiers RPM, si bien que vous voudrez sans doute les mettre dans un répertoire séparé.

    2. Installer les rpms Modula-3 :

      # rpm -Uvh pm3*.rpm
      	

  2. Décompresser la distribution CVSup :

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

  3. Compiler la distribution cvsup, en supprimant l'interface graphique pour éviter d'utiliser les bibliothèques X11.

    # make M3FLAGS="-DNOGUI"
          

    et si vous voulez construire un binaire statique pour l'utiliser sur des systèmes qui n'ont pas Modula-3 installé, essayez :

    # make M3FLAGS="-DNOGUI -DSTATIC"
          

  4. Installer la librairie construite précédemment :

    # make M3FLAGS="-DNOGUI -DSTATIC" install