lambda-DB Installation

The system has been tested on Red Hat Linux 4.2, 6.0, 6.2, 7.0, and 7.1. lambda-DB is built on top of SHORE 1.1.1, so you will need to install SHORE first. If you have a new Pentium Red Hat Linux workstation, you can install SHORE and lambda-DB directly in one step. Otherwise, you will need to install SHORE and lambda-DB from sources.

Installing the lambda-DB Binary Release on a glibc/Intel-based Red Hat Linux (version 5.0 or later)

If you have a new Red Hat Linux (version 5.0 or later) on an Intel-based architecture (Pentium), you can install all the binaries from http://lambda.uta.edu/ldb.1.8.tar.gz (5.3MBs):

gzip -d -c ldb.1.8.tar.gz | tar -xvf -
Then change the .shoreconfig and lambda-DB/ldb.include files to point to your directories (change all pathnames that contain the word "fegaras"). Then do (if necessary):
mv .shoreconfig shore.rc ~/
Then start the SHORE server in a separate window using:
cd shoreserver
../shore/bin/shore
If you are using Red Hat Linux 7.0/7.1, you may need to install the gcc/g++ compatibility packages (see the "Installing SHORE on a glibc/Intel based Red Hat Linux" section). Finally, go to the "Testing the Installation" section below.

Installing the SHORE 1.1.1 Source Release

SHORE 1.1.1 was written using the old libc5 libraries. Check first your gcc version using gcc -v. If it is 2.7.2.1 or 2.7.2.2, it means that your gcc is libc5-based. If it has a later version, it is glibc-based. For example, Red Hat Linux 4.2 or earlier is libc5-based, while Red Hat Linux 5.0 or later is glibc-based. Recently, GNU changed the libraries once again. So SHORE doesn't compile any more on RHL 7.0/7.1. If you have RHL 7.0/7.1, you need to use the backwards compatibility (ie. the old) gcc/g++ packages (see below).

Installing SHORE on a libc5-based Linux

To run the SHORE server on libc5-based Linux, you need tcl version 7.4 (you can easily download this version from scriptics). Then, retrieve the SHORE source and documentation files from here. Then extract the files using:

gzip -d -c linux-shore.tar.gz | tar -xvf -
This will create a directory shore-source and will extract the files inside. Then edit the shore-source/config/config.h file and change the value of TclLib to point to your tcl 7.4 library and the value of FlexLib to point to your libfl.a library. You may also want to remove debugging which slows down SHORE. Then, compile it following the directions in the SHORE installation manual. Finally, run the SHORE server in a separate window and test the PSCAN example in the shore-source/examples/pscan/ directory.

Installing SHORE on a glibc/Intel based Red Hat Linux (5.0 or later)

First download the file http://lambda.uta.edu/RH-glibc-shore.tar.gz (3.46MBs) in the directory you want to install SHORE. Then do

gzip -d -c RH-glibc-shore.tar.gz | tar -xvf -
and you follow the directions in the file install.

If you are using Red Hat Linux 7.0/7.1, you need to check if you have i386-glibc21-linux-gcc in your /usr/bin directory. If not, you need to install the backwards compatibility gcc/g++ files, compat-*.rpm, from a RHL 7.1 distribution You may also need to install the perl-5.6.0-12.i386.rpm from the same distribution, if perl5.6.0 doesn't exist. Then change the config/config.h file:

#define Gcc			'i386-glibc21-linux-gcc'
#define GPlusPlus		'i386-glibc21-linux-g++'
#define Perl			perl5.6.0
and replace the two occurrences of gcc in tools/makemake with i386-glibc21-linux-gcc. Then you can use perl5.6.0 tools/makemake -r to build the makefiles. You should also use i386-glibc21-linux-g++ instead of g++ when you use SHORE on Red Hat Linux 7.0/7.1.

Installing the lambda-DB Source Release

Instalation steps:

  1. Install the GC garbage collector. Directions: after you download GC in your home directory and extract the files, you change the first lines of the Makefile to CC=gcc, CXX=g++ (or i386-glibc21-linux-g++ for RHL 7.0/7.1), and
    CFLAGS= -O -DNO_SIGNALS -DALL_INTERIOR_POINTERS -DSILENT -DATOMIC_UNCOLLECTABLE -DREDIRECT_MALLOC=GC_malloc_uncollectable
    
    and you execute: make and make c++ to create the C and C++ garbage collectors.

  2. Download the source distribution of lambda-DB version 1.8 (293KB) in your home directory and extract the files using:
    gzip -d -c lambda-DB.tar.gz | tar -xvf -
    
    This will create a directory lambda-DB and will extract the files inside.

  3. Start the SHORE server. (The server must be up and running to compile lambda-DB). See the Shore Software Installation Manual.

  4. Go to the lambda-DB directory and edit the file ldb.include to point to your local directories. For Red Hat Linux 7.0/7.1, you must use i386-glibc21-linux-g++ for GCC.

  5. Execute make to build the lambda-DB executables.
make clean will remove all intermediate build files keeping only the executables and libraries, while make distclean will remove executables and libraries too.

Testing the Installation

If you haven't done so, start the SHORE server in a separate window (The server must be up and running to compile the example schemas and queries). Go to the lambda-DB/examples/school directory and execute the following commands:

make build            # initialize the user database and catalogs
make                  # compile school.odl to build the school schema and populate the database
make query            # compile query.oql which contains one statically- and one dynamically-compiled OQL query
./query               # execute the query against the School database
Optional step: extensive test of the system by compiling and executing over 40 static and 40 dynamic OQL queries:
make test             # compile test.oql which contains over 80 OQL queries
./test                # execute the queries against the School database
The lambda-DB/examples/xml directory contains another example for storing and handling XML data.

To test the VOODOO interface, run:

./voodoo
and set the schema name to School.

Using lambda-DB for Class Projects

lambda-DB can be easily used for class projects. First, for a large class, it is good idea to increase the database size before you create it. This can be done by changing the line:

	set rootvolumesize 50000
(ie, 50MBs) in the file ~/shore.rc at the server directory. Then, make sure that you do umask 0 before you create the shoreserver directories and that all SHORE and lambda-DB executables/libraries/include files have the right permission. Then, execute the following SHORE server command during a SHORE session:
begin; chmod 0777 /; commit
Students must create a subdirectory in their home directory for their project. The Makefile in this directory can be similar to lambda-DB/examples/school/Makefile. They need also to copy .shoreconfig to their top directory. Note that this can only work with my new revised version of SHORE SDL. Every user is allowed to have one workspace (with unlimited number of modules), named after the user's login name. Students with the same Unix groupid can read but not write each other's schemas/data, while students with different Unix groupids have no R/W permission to the other's workspace.


Last modified: 11/13/01 by Leonidas Fegaras