Edgewall Software

Version 68 (modified by leiss@…, 19 years ago) ( diff )

Installing and Running Trac on Debian

Releases other than Woody

Debian distributes Trac since Sarge, which has Trac 0.81. You can track version numbers in the not stable releases at http://packages.debian.org/trac.

Sarge users who want to track Edgewall's [latest] version need to add a few lines to their /etc/apt/sources.list :

# Trac and clearsilver
deb http://ftp.edgewall.com/pub/debian sarge trac

Then update APT's cache :

 $ apt-get update

Whether the above steps to get Edgewall's version instead of Debian's were followed or not, installing Trac should be as simple as installing the trac package.

Woody (oldstable)

Woody users need to add a few lines to their /etc/apt/sources.list before installing Trac:

# Trac, clearsilver, sqlite, pysqlite
deb http://ftp.edgewall.com/pub/debian woody trac
# Subversion, Apache2
deb http://people.debian.org/~adconrad woody subversion

After editing the file, installing the trac package should install Trac:

 $ apt-get update
 $ apt-get install trac

Note: While installing Trac on Debian Woody you might get some harmless warnings when the installation process byte-compiles some source files.


More notes for Trac 0.8 on Debian Woody:

Notice, this is what worked for me on a new Woody system I built just to host Trac (in a VMware image, yet!), so I was able to be a little free with modifications I made. Be more careful if you are adding Trac to a system you use for other tasks - don't blame me if these instructions break something!

These instructions ignore the above and start at the very beginning.

  • Subversion really wants Apache2 installed. If you run apache2 -v and get an error, you'll need to install Apache2. I removed apache 1.3 and installed Apache2 with the following:
    apt-get install apache2-common apache2-doc apache2-mpm-worker libapache2-svn
    apt-get remove apache
    apache2 -k start
    
    Also, edit /etc/default/apache2 so it says NO_START=0 if you want apache2 to run on boot.
  • Trac 0.8 runs better with Python 2.2 and python-xml (without them, diffs and attachment uploading will not work). Note that Trac's email notifications will not work unless you have Python 2.2.2 or greater. Since I couldn't find a Debian/stable .deb for anything higher than Python 2.2.1, I gave up on email notifications. Everything else seems to be workng though!
    apt-get install python2.2-xmlbase python2.2-sqlite
    cd /usr/bin
    mv python python.orig
    ln -s python2.3 python
    cp -R /usr/lib/python2.1/site-packages /usr/lib/python2.3
    apache2 -k restart
    

  • Be careful with the above steps. I attempted to follow them on an "existing" (i.e. not fresh) woody box and was unsuccessful in part because I had managed to install a newer version of subversion from source before deciding to try the packages. I decided to bite the bullet and upgrade to sarge so I could use the goodness that is apt while also using fsfs repositories. Aside from breaking my pptpd install, the upgrade only partially solved my trac/subversion woes; I was able to get apache2-mod-svn working, but trac-admin from the command line would fail when one of the subversion Python modules went looking for libswig1.3.21 and I had only libswig1.3.22; symlinking libswig1.3.21.so → libswig1.3.22.so solved that problem but left me with another error in fs.py when running trac-admin help from the command line. After much gnashing of teeth, I tried removing the subversion package and the trac package; this triggered an uninstall of several then-unused support packages, including python2.3. However, /usr/lib/python2.3 still existed and was not empty, despite the apt database showing absolutely no python packages of any version installed. I manually rm'd /usr/lib/python2.3, did an aptitude install subversion trac, and stuff worked; I'm fairly convinced that the manual reworkings of the python install (as described above) were directly related, if not causative, in the problem; the fix could have been as simple as:
    aptitude remove subversion trac python2.3
    rm -r /usr/lib/python2.3
    aptitude install subversion trac python2.3
    
    after I had upgraded to sarge. The removal of python2.3 and the rm of /usr/lib/python2.3 are critical; prior to doing this, I had also tried removing subversion and trac and reinstlling, first from binary and then from source packages; that didn't help.
  • Sorry you had issues, but please note I made the python choices shown specifically for Woody. Your issues stem from being upgraded to Sarge. python2.3 wasn't available in woody when I wrote these instructions, and I made careful note of that. I too had more than a few problems with python (hence these instructions!), so I know where you're coming from. But pure Woody users won't have access to python2.3 as far as I know.

  • After completing these pre-requisites, I added the following to /etc/apt/sources.list
    deb http://ftp.edgewall.com/pub/debian woody trac
    deb http://people.debian.org/~adconrad woody subversion
    
    and ran …

Note for Debian Sarge 3.1 (stable)

If you have Debian Sarge 3.1 you can directly start from this Line, after you've installed Apache2.

apt-get install trac 
  • Getting Subversion working:

I decided to keep my Subversion project at /var/svn/project. Here are the commands I entered to get SVN up and running:

mkdir /var/svn
mkdir /var/svn/project
mkdir /tmp/project
mkdir /tmp/project/branches
mkdir /tmp/project/tags
mkdir /tmp/project/trunk
svnadmin create /var/svn/project
svn import /tmp/project file:///var/svn/project -m "initial import"
rm -rf /tmp/project

I added the following to /etc/apache2/sites-available/default:

#SVN dir
<Location /svn>
  DAV svn
  SVNParentPath /var/svn
  SVNAutoversioning on
  AuthType Basic
  AuthName "SVN - Your Project"
  AuthUserFile /ect/apache2/svn.passwd
  Require valid-user
</Location>

Then I fixed permissions, added User and restarted apache2:

chown www-data /var/svn/project
chown -R www-data /var/svn/project/*
cd /etc/apache2
htpasswd2 -c svn.passwd user1 (you'll be prompted for the password)
htpasswd2 svn.passwd user2 (you'll be prompted for the password)
apache2 -k restart

I was able to test by going to http://servername.foo.com/svn/project where I could see the empty directories as imported. I did not move on to the next step until this worked right!

UPDATE: I had some problems with the WebDAV module not loading. To enable this, you need to create some sym links inside /etc/apache2/mods-enabled. I typed this to get it to work:

ln -s /etc/apache2/mods-available/dav.load /etc/apache2/mods-enabled/dav.load
ln -s /etc/apache2/mods-available/dav_fs.load /etc/apache2/mods-enabled/dav_fs.load
apache2 -k restart

Debian even comes with tools to manage these symlinks. Instead of the above you can also type this, which will have the same effect:

a2enmod dav
a2enmod dav_fs
/etc/init.d/apache2 force-reload

If you are having problems restarting and the error is something like "Unknown DAV provider: svn" try installing the libapache2-svn module by typing

apt-get install libapache2-svn
apache2 -k restart
  • Getting Trac running:

I put my trac environment at /var/trac/project. I'm not using the mod_python extentions at the moment. First I ran

mkdir /var/trac
trac-admin /var/trac/project initenv 
chown -R www-data /var/trac/project

The "trac-admin" command above prompted me to enter the project name, the path to the trac environment, and the path to the Trac templates directory; then it printed out a bunch of stuff.

Next, I edited /etc/apache2/sites-available/default. I commented out the existing ScriptAlias and <Directory "/usr/lib/cgi-bin"> directives, and added this at the end:

Alias /trac "/usr/share/trac/htdocs"
ScriptAlias /proj /usr/share/trac/cgi-bin/trac.cgi
<Location "/proj">
 SetEnv TRAC_ENV "/var/trac/project"
</Location>
  
<Directory "/usr/share/trac/htdocs">
  Options Indexes MultiViews
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>
  
# You need something like this to authenticate users
<Location "/proj/login">
  AuthType Basic
  AuthName "project"
  AuthUserFile /var/www/trac.htpasswd
  Require valid-user
</Location>

Now to fix the permissions, add a couple of users, and restart Apache:

cd /var/www
htpasswd -c trac.htpasswd user1     (you'll be prompted for the password)
htpasswd trac.htpasswd bar user2    (you'll be prompted for the password)
apache2 -k restart

Finally, test by going to http://servername.foo.com/proj/

On my installation, I do get some errors ("Python C API version mismatch for module blah") when I run trac-admin at the commandline. Apache also logs similar errors. This is probably because I didn't upgrade to Python2.2 until after I installed Trac. Hopefully these errors will be avoided by upgradng Python first (as I have advised above), but in any case they don't seem to hurt Trac at all. Everything (except email notifications which I don't need anyway) works perfectly!


Furthermore, there is a guide on building the Debian Trac package from the trunk at TracOnDebianFromTrunk

Note: See TracWiki for help on using the wiki.