Contenu | Rechercher | Menus
Selon les tags présents sur cette page, celle-ci est ancienne et ne contient plus d'informations sur une des versions supportées d'Ubuntu.
Apportez votre aide…

Mise en place d'un serveur CVS

Résumé

Cette page se propose de vous montrer comment installer un serveur CVS, opération qui parait simple une fois faite, mais qui a priori n'est pas si évidente.

Introduction

CVS est un concept qui permet à un ensemble de développeurs de développer sur un même projet, sans se préocuper de l'archivage ni même des modifications concurrentes (deux personnes sur le même fichier). Le principe étant assez complexe, je ne vais pas vous en détailler le fonctionnement et je vous renvoie chez google qui fait ça très bien.

Prérequis

Avoir un système linux fonctionel. Tout est décrit à partir d'une distribution ubuntu mais fonctionne sur toutes les distributions pour peu qu'on adapte certaines choses (comme la récupération et l'installation des paquets …). Mais si vous êtes sous ubuntu, suivez le guide.

Attention : Plus loin j'utilise /mon/chemin/cvs qui n'est pas un vrai répertoire et qui doit être accomodé à vos besoins…

Installation

Dans un premier temps, installons deux choses : CVS (la raison parait assez évidente) et xinetd qui va nous permettre d'accepter les connexions venant de l'extérieur. Je considère que si vous installez un serveur CVS, vous êtes un minimum à l'aise avec le mode console ; dans le cas contraire, faites des copier-coller, ça ira aussi.

Pour Hardy Heron et supérieure

Lien direct cvs ou :

sudo apt-get install cvs

Versions antérieure

Lien direct cvs et xinetd ou :

sudo apt-get install cvs xinetd

Configuration

Utilisateurs et groupes

Nous allons créer un groupe cvs ainsi que les utilisateurs qui y sont associés.

sudo groupadd cvs
sudo useradd -m -g cvs -s /sbin/nologin cvs
sudo useradd -m -g cvs -s /sbin/nologin anonymous

Ces lignes vous permettent d'ajouter des utilisateurs associés directement au groupe cvs et sans login, c'est à dire que l'utilisateur ne peut se logger en faisant su anonymous par exemple… Ajoutez de cette manière tous les utilisateurs que vous voulez. Il faut ensuite modifier un fichier de cette façon :

gksudo gedit /etc/group
#ou pour les barbus
sudo vigr

modifiez la ligne contenant cvs: (tout en bas normalement) pour quelle soit comme ceci :

cvs:x:501:cvs,anonymous,monUser1,...

et ajoutez tous vos utilisateurs

Répertoires

Il faut que le cvs puisse déposer tous ses fichiers quelque part. Nous allons donc lui indiquer où…

Pour l'installation, nous allons utiliser le compte root, afin que vous puissiez placer où vous désirez votre dossier root de cvs. ( Par exemple, /home/rootcvs ).

sudo su -
password
export CVSROOT=/mon/chemin/cvs
mkdir $CVSROOT 

xinetd pour Ubuntu antérieure à Hardy Heron

Nous allons maintenant configurer xinetd afin qu'il fasse le relais entre la couche réseau et le serveur CVS en lui même. Pour cela, lancez la commande

gedit /etc/xinetd.d/cvspserver

et indiquez dans le fichier nouvellement créé :

service cvspserver
{
  port = 2401
  socket_type = stream
  protocol = tcp
  wait = no
  user = root
  passenv = PATH
  server = /usr/bin/cvs
  server_args = -f --allow-root=/mon/chemin/cvs pserver
}

Ces lignes permettent à xinetd d'associer une connexion entrante, à un serveur local. Dans ce cas la connexion se fait sur le port 2401 en mode TCP et le programme que xinetd appelera se trouve dans /usr/bin/cvs. server_args définit les paramètres qui seront passés à la commande serveur. Les autres paramètres définissent des options de connexion, pour plus d'information je vous suggère cette page qui en parles longuement.

Note : Il est possible d’autoriser l’accès à plusieurs repositories, il suffit pour cela de répéter autant de fois que nécessaire l’option –allow-root.

Attention : L'option –allow-root doit absolument pointer vers le dossier créé dans le paragraphe précédent.

Attention bis : Si vous utilisez une autre distribution que Ubuntu, server doit pointer vers l'endroit où est placée votre commande CVS.

Pour que ces paramètres soient pris en compte il suffit de redémarer le service de cette manière :

/etc/init.d/xinetd restart

openbsd-inetd pour Ubuntu Hardy Heron et supérieure

Depuis Ubuntu Hardy Heron, xinetd et inetd sont remplacé par openbsd-inetd.

Voici la commande pour installer le paquet gérant openbsd-inetd :

sudo apt-get install openbsd-inetd

Voici comment configurer le service :

Dans un premier temps, nous allons définir le port à utiliser :

sudo gedit /etc/services

Dans la version d'ubuntu 9.04, il apparait le message suivant à chaque fois qu'il faut utiliser gedit :

(gedit:20882): Gtk-WARNING **: cannot open display:

La solution temporaire que j'ai trouvé est de lancer ces commandes dans un nouveau terminal

Et ajoutez ces deux lignes :

cvspserver	2401/tcp
cvspserver	2401/udp

Maintenant, ajoutons le service dans openbsd-inetd :

sudo gedit /etc/inetd.conf

Et ajoutez à la fin la ligne suivante en changeant le chemin vers cvs :

cvspserver		stream	tcp	nowait		root	/usr/bin/cvs -f --allow-root=/mon/chemin/cvs pserver

Il ne reste plus qu'a redémarrer openbsd-inetd :

sudo /etc/init.d/openbsd-inetd restart

Initialisation du serveur

Une partie somme toute assez simple puisqu'il suffit de faire :

Toujours en tant que root :

cvs init

Normalement il ne se passe rien mais vous pouvez constater que dans /mon/chemin/cvs le répertoire CVSROOT a été créé …

Cela dit, comme nous avons précédemment décidé que le serveur cvs était encapsulé dans un groupe s'appelant cvs, il faut modifier les droits et le propriétaire des fichiers :

chown -R cvs:cvs $CVSROOT
chmod -R 770 $CVSROOT
chmod u+s $CVSROOT

Maintenant, nous n'avons plus besoin de l'environnement root :

exit

Si vous obtenez cette erreur :

cvs init: No CVSROOT specified!  Please use the `-d' option
cvs [init aborted]: or set the CVSROOT environment variable.

La variable CVSROOT n'est pas ou n'est plus renseigné. Normalement, vous devez toujours être en tant que root. Si ce n'est pas le cas, recommencé la partie repertoires

Ajouter les utilisateurs CVS

Dernière étape du procéssus, l'ajout des utilisateurs au serveur CVS. Pour l'instant nous avons ajouté des utilisateurs au sens unix, c'est à dire que le système d'exploitation est en mesure de les reconnaître, mais le serveur CVS non. Pour ce faire, il existe un fichier auquel on accède de cette manière

gksudo gedit $CVSROOT/CVSROOT/passwd &

Le & à la fin va nous permettre de faire autre chose en même temps, sans ouvrir une autre console …

Le fichier est vide… Parfait nous allons le remplir. On a juste besoin de l'utilitaire htpasswd du paquet apt://apache2-utils pour crypter les mots de passe

sudo apt-get install apache2-utils

Les mots de passe sont cryptés par cette commande :

htpasswd -n monUser1

On vous demande un mot de passe et une confirmation. Ne vous inquiétez pas, si vous avez saisi un utilisateur unix existant, la commande ne modifiera pas son mot de passe. A la fin, elle affiche quelque chose comme ça :

New password:
Re-type new password:
monUser1:G2pCH9aRwVhjI

Il suffit alors d'ajouter au fichier (celui que nous avons ouvert avec gedit précédemment) cette ligne agrémentée de :cvs ce qui nous donne :

monUser1:G2pCH9aRwVhjI:cvs
anonymous::cvs

Si il vous est impossible d'enregistrer. Fermez l'éditeur de texte sans enregistrer. lancez la commande

gksudo gedit /chemin/vers/cvs/CVSROOT/passwd &

cela donne par exemple

gksudo gedit /home/rootcvs/CVSROOT/passwd &

L'utilisateur anonyme peut, quant à lui, ne pas avoir de mot de passe (laissez vide le champ réservé au mot de passe pour ne pas le définir). Il est alors important qu'il ne puisse pas modifier le cvs. Pour cela, sauvegardez et fermez le fichier de mots de passe. Faites

gksudo gedit $CVSROOT/CVSROOT/readers

et indiquez simplement:

anonymous

même remarque que pour le passwd. Si cela ne fonctionne pas, Fermez l'éditeur de texte sans enregistrer. lancez la commande

gksudo gedit /chemin/vers/cvs/CVSROOT/readers

cela donne par exemple

gksudo gedit /home/rootcvs/CVSROOT/readers

Dernière chose, si vous désirez renseigner la variable CVSROOT au démarrage, il vous suffit de modifier le fichier .bashrc de votre compte et d'y ajouter l'export dedans :

gedit ~/.bashrc

Et ajouter :

# CVS ROOT DIR
export CVSROOT=/chemin/vers/cvs

Conclusion

Si vous avez suivi intégralement ce tutoriel, vous avez un serveur cvs opérationel. Il vous suffit de vous y connecter de cette manière :

# sur une autre machine
export CVSROOT=:pserver:monUser1@adresse-ip-machine-1:/mon/chemin/cvs
cvs login

Pour une utilisation de CVS, je vous recommande d'utiliser google qui propose des tutoriaux par centaines à ce sujet.

Méthode alternative

Après avoir testé sans succès la méthode décrite ci dessus, j'ai testé la méthode suivante qui a fonctionnée :

Installation de CVS :

 sudo apt-get install cvs  

Installation/configuration du serveur :

 sudo apt-get install cvsd

Entrer "/cvsroot" lorsque l'assistant vous demande un chemin.

Configurations :

 cd /var/lib/cvsd 
 # build the cvsroot:
 sudo cvsd-buildroot /var/lib/cvsd  
 sudo mkdir cvsroot
 sudo cvs -d /var/lib/cvsd/cvsroot init
 sudo chown -R cvsd:cvsd cvsroot

Création d'un utilisateur :

 sudo cvsd-passwd /var/lib/cvsd/cvsroot +justin

Changement du type d'authentification :

L'opération suivante échoue car le fichier config est en lecture seule pour tous les utilisateurs.

sudo vi /var/lib/cvsd/cvsroot/CVSROOT/config
uncomment the “SystemAuto=no” line.

Pour tester la connexion au serveur cvs :

cvs -d :pserver:justin@localhost:/cvsroot login

En cas d'erreur : cvs [login aborted]: connect to localhost(127.0.0.1):2401 failed: Connection refused

sudo vi /etc/cvsd/cvsd.conf

changer la ligne : Listen * 2401 par: Listen 0.0.0.0 2401 ou par : Listen 127.0.0.1 2401 pour une utilisation locale

ensuite faire un redemarrage du cvsd : sudo /etc/init.d/cvsd restart

Méthode tirée de :


Contributeur : PiTiLeZarD - Fortement inspiré de ce HowTo mais pas une traduction exacte., zedtux


cvs_server.txt · Dernière modification: Le 11/11/2010, 11:01 par 90.44.52.10
Le contenu de ce wiki est sous licence : CC BY-SA v3.0