HOWTO Trac

Un article de Gentoo Linux Wiki.

[modifier] A propos

Trac rassemble plusieurs outils en un seul ; trac est en effet :

  • Un outil de gestion de projets logiciels
  • Un WikiWikiWeb
  • Un systeme de suivi de bugs
  • Une interface a subversion (svn)

[modifier] Installation

Installer Trac et toutes ses dépendances :

Code : Installer Trac
# emerge trac -av

Une fois la compilation et l'installation terminées, vérifier qu'Apache démarre bien :

Code : Démarrer Apache
# /etc/init.d/apache2 start

Afin d'installer l'habillage(peut ne pas etre nécessaire avec la vesion > 9_beta2), les styles et les images, il faut procéder à la commande suivante qui les introduira dans un dossier appelé «trac» placé dans /var/www/localhost/htdocs, puis créera le fichier trac.cgi dans /var/www/localhost/cgi-bin. Vous devez changer le numéro de version en fin de commande selon votre configuration.

Code : Utiliser webapp-config pour installer Trac dans le dossier trac de localhost
# webapp-config -I -h localhost -d trac trac 0.8

Afin d'avoir une version française de Trac, on se place dans le répertoire /root et on télécharge le dossier contenant l'habillage français :

Code : Télécharger l'habillage français dans /root/trac
# cd /root
# svn checkout http://trac-hacks.org/svn/tracfrenchtranslation

L'habillage français est alors contenu dans /root/trac/templates. (Note : cet habillage ne marche pas avec la version 0.8, ni 0.8.1. Il semble que le travail fourni soit dédié à des versions CVS.)

Fichier : ATTENTION
(Cette dernière adresse est obsolète)
Reportez vous désormais à : http://trac-hacks.org/wiki/TracFrenchTranslation

En attendant qu'un ebuild soit disponible, vous pouvez télécharger la dernière version en langue française disponible et l'installer à partir des sources :

Code : Télécharger la version 0.10 complète
# cd /usr/src 
# svn checkout http://trac-hacks.org/svn/tracfrenchtranslation trac
# cd trac/0.10
# python ./setup.py install

Et parce qu'il est très pratique, même s'il n'est pas encore traduit en français, installez :

#emerge www-apps/trac-webadmin


On stocke dans le dossier «bidule» le projet logiciel en tant que repo svn, sous /opt/svn/bidule :

Code : Créer le repository subversion dans /opt/svn/bidule
# mkdir -p /opt/svn/bidule
# svnadmin create /opt/svn/bidule

Une fois ce dossier svn créé, on crée le projet Trac. On l'appelle «bidule» et on le stocke dans /opt/trac/bidule.

Code : Créer le dossier Trac du projet
# mkdir /opt/trac
# trac-admin /opt/trac/bidule initenv

Là, trac-admin pose des questions. La première est le nom du projet, la seconde le chemin du répertoire svn (/opt/svn/bidule), et la troisième nous propose d'utiliser un habillage personnalisé, on peut laisser par défaut (anglais) ou choisir l'habillage français (/root/trac/templates).

Le fichier de configuration de Apache doit être modifié. On ouvre /etc/apache2/httpd.conf et on y ajoute ceci :

Fichier : /etc/apache2/httpd.conf
 ScriptAlias /bidule "/var/www/localhost/cgi-bin/trac.cgi"
 
 <Location /bidule>
       SetEnv TRAC_ENV "/opt/trac/bidule"
 </Location>
 
 <Location /bidule/login>
       AuthType Basic
       AuthName "Bidule sous Trac"
       AuthUserFile /opt/trac/bidule/trac.passwd
       Require valid-user
 </Location>

On crée alors le fichier /opt/trac/bidule/trac.passwd avec la commande htpasswd2 pour mettre en place un système d'authentification (ici on crée l'utilisateur moije) :

Code : Créer le fichier d'authentification Trac pour Apache
# htpasswd2 -c /opt/trac/bidule/trac.passwd moije

Ensuite on règle les problèmes de droits :

Code : Mettre les dossiers sous le bon utilisateur avec les bons droits
# chmod -R 755 /opt/svn /opt/trac
# chown -R apache:apache /opt/svn /opt/trac

[modifier] Autoconfiguration

La configuration de SVN, Trac et Apache peut parfois être assez lourde, voici donc un joli script (dégagé d'accent pour ceux qui n'auraient pas les accents dans leur éditeur préféré) qui se fera une joie de vous aider ; vous n'aurez besoin de le modifier qu'une fois pour générer automatiquement chacun de vos environements Trac (et modifier la configuration modulaire d'Apache) :

Fichier : /usr/local/bin/trac_env_create
#!/bin/bash

# Recuperation du nom du script
script=`echo "$0" | tr '/' '\n' | tail -n1`

# Verification du nombre d'arguments
if test $# -ne 1; then
    echo -ne "Usage: \e[1;36m$script"
    echo -e "\e[0m < \e[1;32menvironment \e[0m>"
    exit 1
fi

# Il faut etre 'root'
if test `whoami` != "root"; then
    echo -ne " \e[1;31m* \e[0m"
    echo "Must be root"
    exit 2
fi

# On recupere si possible la largeur du term
colcount=$(($(stty -a | grep 'columns' | tr ';' '\n' | grep 'columns' | tr ' ' '\n' | \
grep -v 'columns') + 0))
TERMSIZE=${colcount:-60}

# Affiche un message precede de '*'
function msg_checking
{
    msg="$1"
    echo -ne " \e[1;36m* \e[0m$msg"
    let fill=${TERMSIZE}-${#msg}-10
    while test $fill -gt 0; do
	echo -n ' '
	let fill=fill-1
    done
}

# On affiche 'OK' ou '!!' selon le resultat du dernier test
function msg_result
{
    echo -ne "\e[1;34m[ "
    if test $1 -eq 0; then
	echo -ne "\e[1;32mok"
	echo -e " \e[1;34m]\e[0m"
    else
	echo -ne "\e[1;31m!!"
	echo -e " \e[1;34m]\e[0m"
	exit 1
    fi
}

# Le repertoire de trac
trac_path="/var/trac"

# Le dossier de svn
svn_path="/var/svn"

# Le chemin vers le depot svn (deja cree)
repos_path="$svn_path/$1"

# Le chemin vers l'environement trac que l'on veut creer
env_path="$trac_path/$1"

msg_checking "Checking for SVN repostory $1"
test -d "$repos_path"; msg_result $?

# Verifiez que les dossiers sont les bons pour vous
msg_checking "Creating Trac environment for $1"
trac-admin "$env_path" initenv "$1"	\
	'sqlite:db/trac.db'		\
	"$repos_path"			\
	'/usr/share/trac/templates' 2>&1 > trac.log; msg_result 0
rm -f trac.log

# Pour moi Apache2 est apache du groupe svnusers
msg_checking "Changing perm of $1"
chown -R apache:svnusers "$env_path"; msg_result $?

# Voici mon modele de configuration d'Apache2
# Pensez a mettre à jour chacun des dossiers qui ne correspond
# pas a votre machine.
# Je suppose de plus que vous utilisez le fichier d'authentification
# de SVN. Adaptez ceci en consequence.
# Ce modele est ajoute a la fin du fichier /etc/apache2/modules.d/48_mod_trac.conf
msg_checking "Appending Trac's conf in apache2 module's conf"
echo \
"
ScriptAlias /trac/$1 \"/var/www/localhost/cgi-bin/trac.cgi\"
<Location /trac/$1>
	SetEnv TRAC_ENV \"$env_path\"
</Location>
<Location /trac/$1/login>
	SSLRequireSSL
	AuthType Basic
	AuthName \"$1 Trac\"
	AuthUserFile /var/svn/conf/svnusers
	Require valid-user
</Location>" >> /etc/apache2/modules.d/48_mod_trac.conf
msg_result $?

N'oubliez pas de recharger Apache pour que le nouvel environement Trac soit pris en compte !

Je fournis aussi le même genre de script pour générer un dépot SVN sur la page du HOWTO Serveur SVN