Installing and setting up debexpo

debexpo is easy to set up on your own. Simply follow the instructions below.

There are three solutions:
  1. Install all dependencies on your system as root.
  2. Install dependencies and debexpo in an isolated environment using virtualenv and virtualenvwrapper.
  3. Use VirtualBox and Vagrant. If you choose this method, follow the instructions under Using Vagrant.

Getting debexpo

You can clone the git repository:

git clone git://

Dependencies needed for both methods

Whatever method you choose, these packages are required:

sudo apt-get install python-apt python-debian iso-codes

If you want to run qa plugins, you will need lintian and dpkg-dev:

sudo apt-get install lintian dpkg-dev

Installing on Debian Squeeze or Wheezy as root

You need to install the required packages. Using apt, you should execute:

sudo apt-get install python-setuptools python-sphinx python-pylons python-sqlalchemy python-soappy python-nose python-pybabel

python-nose is optional if you don’t want to run the test suite.

You also need python-soaplib (version >= 0.8.2).

Using pip:

sudo pip install soaplib

Installing in a virtualenv

Using this method, you will create a virtual Python environment in which you can install the dependencies for debexpo without altering your system (i.e., without requiring root). In addition, this will also let you isolate debexpo’s requirements, in the event an application installed globally might require a conflicting version of a library, or vice versa.

Virtualenv setup

Skip this section if you already have a working virtualenv setup.

Install virtualenvwrapper:

sudo apt-get install virtualenvwrapper


To install lxml from sources, you will need gcc, libxml2, libxslt1.1 and python-dev, python-apt depends on libapt-pkg-dev:

sudo apt-get install gcc libxml2 libxml2-dev libxslt1.1 libxslt1-dev python-dev libapt-pkg-dev

Debexpo installation

First, create a new virtualenv for debexpo, and enter it:

mkvirtualenv expo
workon expo

Note: If you get a “command not found” error for “mkvirtualenv”, run the following in your shell:


Note that now, whenever you run “python”, you run an interpreter that is sandboxed to the “virtualenv” in question. You can test this by typing:

which python

and you will see it is not /usr/bin/python! Additionally, your shell prompt should have a little prefix before the prompt that looks like:


You can now install debexpo. This will download and install all required libraries:

python develop

If for any reason you need to exit the virtualenv, you may enter deactivate to exit the virtualenv.

Editing your configuration

Now edit development.ini to match your configuration.

Setting up the application

Execute the following commands to setup the application:

paster setup-app development.ini
python compile_catalog

Using Vagrant

  1. Install VirtualBox.

  2. Install Vagrant.

  3. In the checked-out debexpo repository on the host machine, run:

    vagrant up --provision
    vagrant ssh
  4. You’ll now be in a shell session on your Vagrant-configured VirtualBox.

  5. Run:

    cd debexpo
    . venv/bin/activate
  6. You now have a setup virtualenv with all the dependencies for debexpo installed. Follow the rest of the instructions to run debexpo.

Running debexpo

Using paste’s built-in webserver

Simply execute:

paster serve development.ini

and visit http://localhost:5000/ in your web browser.

Using Apache

(Canonical instructions for getting Pylons apps working under Apache are here.)

  1. Install apache2, mod-fastcgi and flup:

    sudo apt-get install python-flup apache2 libapache2-mod-fastcgi
  2. Edit the server:main section of your debexpo.ini so it reads something like this:

    use = egg:PasteScript#flup_fcgi_thread
    host =
    port = 6500
  3. Add the following to your config:

    <IfModule mod_fastcgi.c>
      FastCgiIpcDir /tmp
      FastCgiExternalServer /some/path/to/debexpo.fcgi -host localhost:6500
Note: Parts of this may conflict with your /etc/apache2/conf-available/fastcgi.conf. /some/path/to/debexpo/fcgi need not physically exist on the webserver.