[Accueil] alex / doc / cvs


Mise en place d'un serveur CVS
sur Debian GNU/Linux

$Revision: 1.16 $
$Date: 2004/03/06 18:13:20 $

Introduction

Ce document explique comment paramétrer un serveur CVS sur un poste Linux utilisant la distribution Debian GNU/Linux 3.0 (alias Woody).

Licence

Copyright 2002-2004 Alexandre Ratti. Document diffusé dans les conditions des licences GPL 2 (GNU General Public License) et GFDL 1.2 (GNU Free Documentation License). [Explications]

Principes

Dans ce document, le référentiel est installé dans dans /home/cvs. Le réseau local s'appelle toto.net ; le serveur CVS est accessible à l'adresse cvs.toto.net. Le référentiel va contenir, entre autres, le site Web www.toto.net. Les utilisateur qui ont des droits d'écriture dans le référentiel s'appellent marc et alex.

1) Installation de CVS

Sur Debian, en qualité d'administrateur :

apt-get install cvs

Pour reconfigurer un serveur CVS déjà installé :

dpkg-reconfigure cvs

Accepter l'utilisation du serveur pserver. Créer le référentiel dans /home/cvs.

Par défaut, le serveur cvs est exécuté en qualité de root. Créer un compte d'utilisateur limité, cvs. Le pserver CVS sera exécuté sous ce nom. S'assurer qu'il est bien propriétaire du dossier racine de CVS. Dans la foulée, ajouter les utilisateurs courants au groupe cvs pour qu'ils puissent accéder directement au référentiel CVS en local.

mkdir /home/cvs
adduser --no-create-home --disabled-login --system --group cvs
chown -R cvs:cvs /home/cvs
adduser marc cvs
adduser alex cvs

Toujours en qualité d'administrateur, activer le référentiel CVS :

export CVSROOT=/home/cvs
cvs init

Dans /etc/xinetd.conf, ajouter le code ci-dessous en utilisant les bonnes adresses IP.

service cvspserver
   {
   id = cvs_network
   disable = no
   wait = no
   protocol = tcp
   user = cvs
   socket_type = stream
   env = "$HOME=/home/cvs"
   # bind n'est utile que si la machine contient plusieurs cartes
   bind = 192.168.0.2
   log_on_failure += USERID
   port = 2401
   server = /usr/bin/cvs
   server_args = -f --allow-root=/home/cvs pserver
   only_from = .toto.net
   }

Redémarrer xinetd.

/etc/init.d/xinetd restart

Remarque : si vous n'avez pas de fichier /etc/xinetd.conf, xinetd n'est probablement pas installé sur votre serveur. C'est le démon inetd qui est installé par défaut sur Debian Woody. Pour remplacer inetd par xinetd, tapez apt-get install xinetd.

2) Paramétrage de CVS

Ouvrir un terminal sous le nom d'un utilisateur standard, marc par exemple. Sortir de CVS les fichiers de configuration pour pouvoir les modifier. Un dossier CVSROOT est créé dans le répertoire courant.

cd /home/marc
export CVSROOT=/home/cvs

cvs co CVSROOT
cd CVSROOT

Créer le fichier de mots de passe de CVS. Problème : dans le fichier, les mots de passe doivent être chiffrés, mais CVS ne propose pas de commande pour le faire. On peut normalement copier le mot de passe chiffré dans /etc/passwd, mais Debian utilise des mots de passe MD5, plus longs, qui risquent de ne pas être reconnus.

Format des lignes du fichier de mots de passe :

alex:qsmdlfkqmldk:cvs
marc:modkfjgmldfj:cvs

alex est le nom de l'utilisateur qui se connecte ; cvs est le nom sous lequel le serveur est exécuté (toujours "cvs", dans notre cas).

Si Apache est installé sur le poste, on peut utiliser un de ses outils pour créer le fichier de mot de passe. Dans le dossier CVSROOT :

htpasswd -c passwd alex

Ensuite, entrer le mot de passe.

Pour actualiser un fichier de mot de passe :

htpasswd passwd marc

Vérifier que cet utilitaire n'a pas supprimé la 3ème colonne de chaque ligne de mot de passe. Le cas échéant, la rajouter (:cvs).

Si Apache n'est pas installé sur le poste, il faut trouver autre chose. Créer le fichier :

touch passwd

Générer un mot de passe chiffré avec cette formule magique :

perl -e "print crypt('mot_de_passe','az');" >> passwd

Ouvrir le fichier passwd et y corriger les informations.

nano passwd
...
marc:modkfjgmldfj:cvs

Dans la foulée, ouvrir le fichier cvswrappers et y ajouter les lignes ci-dessous. Elles permettent de déclarer quels fichiers sont binaires, pour que CVS ne les abîme pas à l'importation.

*.avi -k 'b' -m 'COPY'
*.doc -k 'b' -m 'COPY'
*.exe -k 'b' -m 'COPY'
*.gif -k 'b' -m 'COPY'
*.gz -k 'b' -m 'COPY'
*.hqx -k 'b' -m 'COPY'
*.jar -k 'b' -m 'COPY'
*.jpeg -k 'b' -m 'COPY'
*.jpg -k 'b' -m 'COPY'
*.mov -k 'b' -m 'COPY'
*.mpg -k 'b' -m 'COPY'
*.pdf -k 'b' -m 'COPY'
*.png -k 'b' -m 'COPY'
*.ppt -k 'b' -m 'COPY'
*.sit -k 'b' -m 'COPY'
*.swf -k 'b' -m 'COPY'
*.tar -k 'b' -m 'COPY'
*.tgz -k 'b' -m 'COPY'
*.tif -k 'b' -m 'COPY'
*.tiff -k 'b' -m 'COPY'
*.xbm -k 'b' -m 'COPY'
*.xls -k 'b' -m 'COPY'
*.zip -k 'b' -m 'COPY'
*.ogg -k 'b' -m 'COPY'
*.mp3 -k 'b' -m 'COPY'

Maintenant, réimporter les fichiers modifiés dans CVS. D'abord, déclarer le fichier qui a été créé :

cvs add passwd

Puis demander à CVS de comparer le répertoire local avec le référentiel. Il doit énumérer les fichiers ajoutés/modifiés.

cvs update

Ensuite, valider les modifs.

cvs commit

Toujours dans le même dossier, éditer le fichier checkoutlist et y ajouter la ligne

passwd

en fin de fichier. Objectif : déclarer que le fichier passwd qui vient d'être créé est un fichier d'administration exportable comme les autres.

Actualiser et valider :

cvs update
cvs commit

3) Importation de données et accès au référentiel

Importation d'un site dans le référentiel

À ce stade, on doit pouvoir importer un site dans la base. Dans la foulée, tester l'accès pserver. Toujours avec un compte d'utilisateur standard :

export CVSROOT=:pserver:marc@cvs.toto.org:/home/cvs
cvs login
cd /chemin/du/dossier/www.toto.net
cvs import www.toto.net toto initial

On peut maintenant emprunter (checkout) la dernière version du site depuis un poste Windows ou Linux pour la modifier en local.

Accès aux données depuis Windows

Installer un outil Windows. Deux choix :

Avec TortoiseCVS, cliquer avec le droit droit sur l'icône du disque où on veut placer la version locale du site et choisir CVS Checkout dans le menu contextuel.

Paramètres :

Le site est extrait du référentiel. Chaque répertoire de l'arborescence créée contient un sous-répertoire appelé CVS. Ne pas le supprimer, il contient des infos importantes.

On peut maintenant :

Installation d'une interface Web

Le paquet viewcvs est un script en Python qui permet de parcourir le contenu d'un référentiel CVS à partir d'un serveur Web.

apt-get install apache viewcvs

Des questions sont posées pendant l'installation du paquet viewcvs. Vérifier dans /etc/viewcvs/viewcvs.conf que les réponses ont bien été enregistrées.

Dans /etc/apache/httpd.conf, ajouter la ligne suivante en fin de fichier :

Alias /viewcvs/ /usr/share/viewcvs/

Relancer Apache :

/etc/init.d/apache restart

Le contenu de la base CVS devrait être consultable à l'adresse :

http://www.toto.net/cgi-bin/viewcvs.cgi/

Documentation

Présentations de CVS

Application de CVS à l'administration de sites Web

Paramétrage détaillé d'un serveur CVS


$Id: index.html,v 1.16 2004/03/06 18:13:20 alex Exp $
http://www.gabuzomeu.net/alex/doc/serveur-cvs/index.html
courrier électronique | e-mail  Alexandre Ratti