Next: , Up: Installation


5.1 Installation

Please see the file “INSTALL” in the source distribution for more precise information; this is an overview.

Installation of Elephant itself is easy because of the asdf system. Just execute:

     (asdf:operate 'asdf:load-op :elephant)

However, Elephant cannot function without a back-end repository. Elephant presents exactly the same API no matter what you choose as a repository. In most cases Elephant will automatically load the backend you refer to with your controller spec when you call open store. However, you may have to use asdf to load the code that interfaces to particular repository system.

The basic choices are to use the BerkeleyDB system or a SQL based system. You must perform one of these:

     (asdf:operate 'asdf:load-op :ele-clsql)
     (asdf:operate 'asdf:load-op :ele-bdb)

If you choose a SQL based system, you may have to load a specific package for that system, such as:

     (asdf:operate 'asdf:load-op :ele-sqlite3)

or, for Postgres,

     (asdf:oos 'asdf:load-op :clsql-postgresql-socket)

You will have to have the CL-SQL package installed. Following the documentation for CL-SQL under the section “How CLSQL finds and loads foreign libraries” you may need to do something like:

     (clsql:push-library-path "/usr/lib/")

before doing

     (asdf:oos 'asdf:load-op :clsql-postgresql-socket)

in order for clsql to find the PostGres library libpq.so, for example.

Without modifcation, Elephant uses this as it's lib path:

     /usr/local/share/common-lisp/elephant-0.3/

So you could put a symbolic link to libpq.so there, where libmemutil.so and libsleepycat.so will also reside.

Elephant is designed to allow multi-repository operation; so you could concievably use two or more repositories at the same time. More particularly, you can seamlessly migrate your data from one repository to a different one at a later date. In a long duration project, this might occur because of a licensing or performance issue with a particular respository. Migrating to a new repository of the same type is a cheap form of GC although migration is limited to the total size of main memory to store a hash table that tracks all copied object ID's.