Here is a description of Fran├žois' chroot-based development. These instructions should work on any Debian-based system (yes, this does include Ubuntu).


You must do the following in your host environment:

  • Install app according to

  • install a database server:

    apt-get install postgresql
  • create a user and a database:

    sudo -u postgres createuser -D -P -R -S djangouser
    sudo -u postgres createdb -O djangouser libravatar
  • stop Apache (if running):

    sudo /etc/init.d/apache2 stop
  • put the following in your /etc/hosts:

Initial setup

To create and initialize your chroot-based environment:

  • create a new chroot:

    mkdir /var/chroot/squeeze-amd64
    debootstrap squeeze /var/chroot/squeeze-amd64
  • add this line to /etc/fstab:

    proc  /var/chroot/squeeze-amd64/proc  proc  defaults  0  0
  • mount the necessary filesystems:

    mount -a
  • install the schroot package and put this in your /etc/schroot/schroot.conf:

    description=Debian Squeeze amd64 (squeeze)
  • enter the chroot as root:

    sudo schroot -c squeeze
  • install the required packages in the chroot:

    apt-get install git make debhelper yui-compressor python-django python-psycopg2 python-gearman.libgearman python-imaging python-openid python-dns pylint pep8 pyflakes
  • get a copy of the repo:

    cd /root
    git clone
  • create a config file for your environment:

    cd /root/libravatar/libravatar
    cp libravatar/ libravatar/

    (edit to use as the domain and contain the right database credentials)

  • build the packages:

    cd /root/libravatar
    make package
  • install the packages:

    cd /root
    dpkg -i libravatar-{common,cdn,seccdn,www}*deb
    apt-get install -f

    (use as the domain name and localhost as the db hostname)

  • create a self-signed SSL certificate:

    make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/libravatar/seccdn.pem
    cp /etc/libravatar/seccdn.{pem,crt}
    cp /etc/libravatar/{seccdn,chain}.pem

    (use as the common name)

  • start Apache:

    /etc/init.d/apache2 start

Entering the chroot to work

The next time you want to get inside the chroot to do some work, simply do the following:

  • stop Apache on the main host:

    sudo /etc/init.d/apache2 stop
  • enter the chroot as root:

    sudo schroot -c squeeze
  • start apache and gearman in the chroot guest:

    /etc/init.d/apache2 start
    /etc/init.d/gearman-job-server start

Updating the codebase

If you want to update the Libravatar codebase you are working from, do this:

  • update the branch:

    cd /root/libravatar
    git pull
  • get rid of old packages:

    cd /root
    rm -f libravatar*.deb
  • build and install new packages:

    cd /root/libravatar
    make package
    cd /root
    dpkg -i libravatar-{common,cdn,seccdn,www}*deb
  • restart apache:

    /etc/init.d/apache2 restart