1. Einführung

trac_logo.pngAls Kopf eines winzigen Softwareteams suchte ich schon lange nach einer Lösung für Bugtracking, Ticketsystem und zentraler Infosammlung für Dokus etc.

Ein Artikel in der iX hat mich auf Trac aufmerksam gemacht – hier kurz die Features:

  • integrierte Versionsverwaltung mit Subversion, CVS u.a.
  • integriertes Wiki-System zum einfachen Einpflegen von Dokus, Infos etc.
  • automatische Verlinkung aller Infos
  • schlankes System, braucht wenig Ressourcen, OpenSource
  • sehr flexibel, stark anpassbar und erweiterbar
  • trotz der kleinen Versionsnummer recht zuverlässig

Nach kurzem Vergleich mit einigen kommerziellen Systemen hab ich mich in dieser Woche an die Installation gewagt.

2. Installation

Jetzt begann der mühselige – aber nicht schwierige Teil – die Vorbereitung der Installation. Es galt, diverse abhängige Pakete zu installieren, bevor die eigentliche Installation von Trac beginnen konnte.

2.1 Voraussetzungen

Dank dem TracGuide musste man nicht lange suchen und so hab ich für Trac 0.10.4 für den SuSE Server folgende Pakete eingespielt:

  • Python 2.3 (oder höher) mit Entwicklungsumgebung (python-dev, python-xml)
  • PosgreSQL nebst Python-Anbindung (python-psycopg2)
  • ClearSilver 0.10.4 (clearsilver) nebst Python-Anbindung (python-clearsilver)
  • SWIG
  • Enscript
  • DocUtils (docutils)
  • SetupTools (easy_setup.py)
  • Subversion (für Versionsverwaltung beliebiger Dateien)

2.2 Installation von Trac

Jetzt endlich konnte ich Trac installieren – und das ging sehr flott:

1. Trac als TAR-Package runterladen trac-0.10.4.tar.gz
2. Entpacken, z.B. nach /tmp/
3. Im entpackten Ordner python ./setup.py install aufrufen

      Jetzt ist Trac zwar installiert, es fehlt aber noch die Datenbank und das erste Projektverzeichnis.

      2.3 Einrichtung

      Der Einfachheit halber und aus Performancegründen habe ich mich auf PosgreSQL und als Standalone-Server (d.h. Trac läuft als Daemon und braucht keinen Webserver).

      Datenbank einrichten:

      1. Als User „postgresql“ einloggen:
        su – postgres
      2. Datenbank-Benutzer anlegen:
        createuser -U postgres -E -P tracuser
      3. Datenbank erzeugen:
        createdb -U postgres -O tracuser -E UTF8 trac

      Jetzt können wir die Trac-Datenbank wie folgt erreichen:
      postgres://tracuser:
      [PASSWORT]@localhost/trac

      Das Versionsverwaltungssystem Subversion sollte bereits eingerichtet sein – wenn nicht, hier gibts ne deutsche Anleitung.

      Projektverzeichnis einrichten:

      Jedes Projekt hat ein eigenes Projektverzeichnis. Ich habe meine Umgebung unter /srv/trac/ abgelegt, hier werden die einzelnen Projektverzeichnisse erstellt.

      Wir erzeugen unser erstes Projekt mit:
      trac-admin /srv/trac/[PROJEKTNAME] initenv

      Jetzt kommen Abfragen nach Projektname, Beschreibung und dem „Database connection string“.

      Der database connection string lautet hier:
      postgres://tracuser:[PASSWORT]@localhost/trac

      Weiterhin wird gefragt, wo sich das Repository von Subversion befindet – hier den Pfad zum Subversion angeben – z.B.: /home/subversion/repository.

      3. Server starten

      Da wir einen Standalone-Server wollen, können wir auf die mühselige Apache-Konfiguration verzichten und sofort loslegen:

      tracd –port 8000 -e /srv/trac/

      Und schon ist der Trac im Browser unter http://localhost:8000/ erreichbar.

      Um den Server beim Booten zu laden, benötigen wir nur noch ein Startscript – ich habe mal eins für SuSE Systeme erstellt (Download: Trac init script – bitte in rctracd umbenennen und nach /etc/init.d/ kopieren).

      Die Bedienung ist einfach:

      rctracd start — startet den Server

      rctracd stop — beendet den Server

      rctracd status — teilt uns mit, ob der Server bereits läuft

      Jetzt einfach im Yast Runlevel Editor den Dienst aktivieren und fertig!
      Was jetzt fehlt, ist nur noch der Feinschliff 😉

      4. Feinschliff – oder: Welche Plugins man braucht
      Im Standard-Auslieferungszustand muss man leider alles noch von der Console administrieren – wie uncool 😉

      4.1 Das WebAdmin Plugin

      Daher: Erstmal das WebAdmin Plugin installieren, dann gehts auch fluffig von der Weboberfläche.

      Die Installation von WebAdmin und allen anderen Plugins ist erstaunlich einfach:

      Syntax: easy_install [SUBVERSION-URL]

      easy_install http://trac.edgewall.org/browser/branches/0.10-stable

      Jetzt nur noch folgende Zeilen in die /srv/trac/[PROJEKTNAME]/conf/trac.ini eintragen:

      [components]
      webadmin.* = enabled

      …und anschliessend den Trac Server neustarten (rctracd restart). Et voilá: Es gibt einen neuen Menüpunkt „Admin“.

      Alle weiteren Plugins installieren sich auf die gleiche Art – zu finden sind Erweiterungen jeder Art auf: trac-hacks.org

      4.2 Wichtige AddOns

      TracAccountManager – Nutzerverwaltung im Webinterface (sehr wichtig!)

      TracDateField – Datumseingaben per schickem Kalender-Popup und Plausi-Checks

      TracGantt – Gantt-Diagramm für Tickets

      TracCustomFieldAdmin – Eigene Ticket-Felder komfortabel im Webinterface verwalten

      NavAdd – Menüleiste um weitere Punkte ergänzen

      TracWikiGoodies – Smilies, Makros und kleine Helferlein

      TracRepoSearch – Suche im ganzen Subversion-Repository (ideal um Dateien zu finden)

      5. Fazit

      Seit der Einführung des Ticket-Systems und den autmatischen Benachrichtigungen ist die Arbeit doch wesentlich transparenter und übersichtlicher geworden. Endlich sieht man auf einen Blick, wer gerade was wo noch offen hat und bis wann das erledigt sein sollte.

      Hierbei hilft vorallem das TracGantt Plugin, da es u.a. das zusätzliche Datumsfeld für „Due close“ (Fälligkeit am) einführt und die zeitlichen Abhängigkeiten grafisch darstellt.

      Und seitdem wir bei Commit-Meldungen von Subversion stets die Ticketnummer eintragen (z.B.: „#2“), sind diese Meldungen in Trac automatisch mit den Tickets verlinkt – das erspart Tipparbeit und macht die Meldung nachvollziehbarer.

      6. Weiterführende Links

      Das Trac Ticketsystem – Infos+HowTo