Logo subversion

Le gestionnaire de source est la brique de base indispensable à toute tentative d'industrialisation des développements. Voici maintenant une petite procédure d'installation d'un serveur Subversion, dernière version (donc 1.7.2 à ce jour) sur un serveur Debian Lenny qui utilisera tant que possible les paquets et qui s'appuiera en outre sur:

  • un serveur HTTP Apache série 2.2
  • un serveur de messagerie Postfix
  • un navigateur de dépôts de source WebSVN qui fera l'objet d'un autre billet.

Serveur HTTP

Pour installer le serveur HTTP Apache, rien de plus simple:

  $ sudo apt-get install apache2 libapache2-mod-php5

Notez qu'on prend aussi la gestion CGI PHP pour WebSVN.

Subversion

Pour installer subversion, il va falloir le compiler, les paquets Debian n'offrant pas la version 1.7.2 (série 1.5 au moment de la rédaction). Il nous faut d'abord la bibliothèque neon, pré-requis pour l'accès client car, une fois encore, la version debian étant insuffisante (0.27). Il faut donc récupérer la version 0.29 sur http://www.webdav.org/neon, puis:

  $ tar xzvf neon-0.29.x.tar.gz
  $ cd neon-0.29.x
  $ ./configure
  $ make
  $ su -c 'make install'

Il se peut que la bibliothèque libxml2-dev-2.6.32 ne soit pas présente, ce qui engendrera une erreur de compilation :

  $ sudo apt-get install libxml2-dev-2.6.32

Subversion proprement dit

Pré-requis

On commence par installer les pré-requis:

  • sqlite3 pour la gestion interne de Subversion
  • libapr1 et libaprutil1 pour les bibliothèques d'utilitaires d'apache
  • apache2-prefork-dev pour apxs (nommé apxs2 d'où le paramètre ci-dessous) pour le chargement dynamique du module svn

Attention utiliser sqlite3 et pas sqlite

   $ sudo apt-get install sqlite3 libapr1-dev libaprutil1-dev apache2-prefork-dev

Compilation

Récupérer l'archive tar.gz sur http://subversion.apache.org

Récupérer également l'archive sqlite3 suffisamment à jour sur http://www.sqlite.org/download.html : prendre sqlite-amalgamation-xxxxx.zip

Puis:

  $ cd $SOURCES
  $ tar xzvf subversion-1.7.xx.tar.gz
  $ unzip sqlite-amalgamation-xxxx.zip
  $ mv sqlite-amalagation-xxxx subversion-1.7.xx/sqlite-amalgamation
  $ cd subversion-1.7.xx
  $ ./configure --with-apxs=/usr/bin/apxs2
  $ make
  $ sudo make install

Note: Ne pas tenir compte de l'avertissement relatif à Berkeley DB

Bonus

  • Hot-backup.py: ce script permet de faire des copies de sauvegarde des dépôts de source à chaque commit. Il se trouve dans tools/backup/hot-backup.py
  • commit-email.pl: ce script permet d'envoyer un mail lorsqu'un commit est réalisé. Il se trouve dans contrib/hoot-scripts/

Attention, ce script est signalé comme déprécié et à remplacer par mailer.py

Configuration du serveur HTTP

Le fichier de configuration (site_svn) sera de la forme:

  <VirtualHost *:80>
     servername subversion
     DocumentRoot /var/www
     DirectoryIndex index.html index.php
     DavLockDB /var/www/DavLockDB
     <Directory />
        order deny,allow
        deny from all
        Dav off
     </Directory>
     <Location /projets/>
        Include /etc/apache2/sites-available/site_svn_auth.conf
        AuthUserFile /var/www/conf/perm.txt
        Dav svn
        SVNParentPath /var/www/depots
        SVNIndexXSLT "/svnindex.xsl"
     </Location>
  </VirtualHost>
  • ce fichier sera dans /etc/apache2/sites-available/site_svn
  • l'URL du dépôt sera http://subversion/projets/mon_projet
  • le dépôt, sur le serveur, sera dans /var/www/depots
  • les directives d'authentification seront dans /etc/apache2/sites-available/site_svn_auth.conf
  • le fichier de droits en lecture, écriture sur le dépôt sera dans /var/www/conf/perm.txt
  • le fichier XSL réalisant l'affichage dans le navigateur de l'arborescence du dépôt sera /var/www/svnindex.xsl

Le fichier de configuration site_svn_auth.conf pourra être de la forme suivant (authentification LDAP et htpasswd):

  AuthName "Subversion"
  AuthType Basic
  AuthBasicProvider ldap file
  AuthUserFile /var/www/conf/utilisateurs.txt
  AuthLDAPURL "ldap://IP1 IP2/dc=domaine,dc=fr"
  Require valid-user

Le fichier identifiant/mot de passe pour les utilisateurs hors LDAP sera dans /var/www/conf/utilisateurs.txt

On active ensuite les modules nécessaires:

  $ sudo a2enmod authnz_ldap
  $ sudo a2enmod dav_fs
  $ sudo a2enmod dav_lock
  $ sudo a2enmod dav_svn

On désactive le site par défaut et on active le site svn:

  $ sudo a2dissite default
  $ sudo a2ensite site_svn

A ce stade, le serveur apache peut être lancé avec succès.

Lancement du serveur Web

On rédemarre le serveur (apache2ctl restart) et on vérifie qu'on obtient la ligne suivante dans /var/log/apache2/error.log:

  Thu Dec 03 14:02:31 2009 notice Apache/2.2.9 (Debian) DAV/2 SVN/1.6.6 PHP/5.2.6-1+lenny3 with Suhosin-Patch configured -- resuming normal operations

Postfix

Nous allons maintenant installer un serveur de messagerie minimal afin de pouvoir relayer les mails vers les utilisateurs concernés. On installe postfix et on choisit système satellite.

  $ sudo apt-get install postfix
  > système satellite
  > Nom de courrier: nom.domaine.fr, OK
  > Serveur relais SMTP: 192.168.0.2, OK

Pour tester, on peut utiliser:

  $ /usr/sbin/sendmail -t adresse@mail.fr
  >To: adresse@mail.fr
  >From: moi  
  >Subject: test
  test
  .

Et voilà, à ce stade, on doit disposer d'un dépôt de source subversion à jour...