Installation instructions
=========================

cfvers is written in python, and requires python 2.3 or
newer. However, python 2.4 is recommended due to improvements in
unicode handling and other nice stuff.

Required software:
    * pyro (http://pyro.sourceforge.net/) which is used for client-server
      communication, and whose utilities are used even in standalone mode
    * mxDateTime

Also, depending on your intented repository setup, you will need one of:
    * sqlite: the sqlite library itself, located at http://www.sqlite.org/
      and the python bindings - the pysqlite library, located at 
      http://initd.org/projects/pysqlite
    * postgres: an accessible postgres database, and on the machine you
      wish to run cfvers the postgres client libraries and the python 
      bindings - the psycopg2 library, found at 
      http://initd.org/projects/psycopg2

The versions needed (i.e. tested) are:
    * pysqlite 2.0.5
    * psycopg2 2.0b5

If you run Debian, you'll find all dependencies you need in the
following packages: python-pysqlite2 or python-psycopg2.

After you have all the dependencies, untar the package into a dir, and
do the ./configure && make && make install routine. The scripts will
be installed (by default) as /usr/local/bin/cfv,
/usr/local/bin/cfvadmin.

If you want to run in standalone mode, you can configure your
cfvers.conf to point directly to the database (local mode).

If you want to run in client-server mode, you must configure users and
password on the server, start the server, configure the user/password
on the client side and the you can access the server.

Postgresql dabatase setup
=======================
If you use the postgresql backend, you must take a few extra steps:
 * create a database with enoding UTF-8
 * for "cfv find --name ..." support, you also must install the 
   plypthonu languange into the database and create the following
   function:

CREATE OR REPLACE FUNCTION fnmatch (text, text) RETURNS boolean
LANGUAGE plpythonu AS '
import fnmatch
return fnmatch.fnmatch(args[0], args[1])
';
