Log of an installation of libexodus on Centos 5.3

From NEOSYS Dev Wiki
Jump to navigationJump to search

Preparation

sudo yum update
sudo yum install boost-devel postgresql-devel gcc-c++ subversion postgresql-server
sudo /etc/init.d/ postgresql start

Exodus

cd ~
mkdir exodus
cd exodus
svn co http://svn.neosys.com/svn/trunk
cd trunk/exodus
./configure
make
sudo make install
sudo nano /etc/ld.so.conf

... and add the following line (note: NO preceding word include)

/usr/local/lib

register the new libraries

sudo /sbin/ldconfig

make a pointer to the include files

sudo ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus 

Testing

nano tester.cpp
 #include <exodus/exodus.h>
 int main() {
	date().oconv("D").outputln();
	print(oconv(date(),"D"));
 }
g++ tester.cpp -lexodus -I/usr/local/include/exodus
./a.out
27 JUN 2009
27 JUN 2009

Setting up Postgres for Exodus

become user postgres and get into postgres command prompt

sudo su - postgres
psql

create a user and database for exodus. Use the given password for now.

CREATE ROLE exodus LOGIN
 PASSWORD 'somesillysecret'
 CREATEDB CREATEROLE;
CREATE DATABASE exodus
 WITH ENCODING='UTF8'
   OWNER=exodus;
\connect exodus


-- cut and paste the following SQL to register the functions into postgres --

CREATE OR REPLACE FUNCTION exodus_call(bytea, bytea, bytea, bytea, bytea, int4, int4) RETURNS bytea AS 'pgexodus', 'exodus_call' LANGUAGE C IMMUTABLE;

CREATE OR REPLACE FUNCTION exodus_extract_bytea(bytea, int4, int4, int4) RETURNS bytea AS 'pgexodus', 'exodus_extract_bytea' LANGUAGE C IMMUTABLE;

CREATE OR REPLACE FUNCTION exodus_extract_text(bytea, int4, int4, int4) RETURNS text AS 'pgexodus', 'exodus_extract_text' LANGUAGE C IMMUTABLE;

CREATE OR REPLACE FUNCTION exodus_extract_sort(bytea, int4, int4, int4) RETURNS text AS 'pgexodus', 'exodus_extract_sort' LANGUAGE C IMMUTABLE;

-- Remaining functions are STRICT therefore never get called with NULLS -- also return NULL if passed zero length strings

CREATE OR REPLACE FUNCTION exodus_extract_text2(bytea, int4, int4, int4) RETURNS text AS 'pgexodus', 'exodus_extract_text2' LANGUAGE C IMMUTABLE STRICT;

CREATE OR REPLACE FUNCTION exodus_extract_date(bytea, int4, int4, int4) RETURNS date AS 'pgexodus', 'exodus_extract_date' LANGUAGE C IMMUTABLE STRICT;

CREATE OR REPLACE FUNCTION exodus_extract_time(bytea, int4, int4, int4) RETURNS time AS 'pgexodus', 'exodus_extract_time' LANGUAGE C IMMUTABLE STRICT;

CREATE OR REPLACE FUNCTION exodus_extract_datetime(bytea, int4, int4, int4) RETURNS timestamp AS 'pgexodus', 'exodus_extract_datetime' LANGUAGE C IMMUTABLE STRICT;

Check the functions loaded properly (count them)

\df exodus*
                                                  List of functions
 Schema |          Name           |      Result data type       |                 Argument data types
--------+-------------------------+-----------------------------+-----------------------------------------------------
 public | exodus_call             | bytea                       | bytea, bytea, bytea, bytea, bytea, integer, integer
 public | exodus_extract_bytea    | bytea                       | bytea, integer, integer, integer
 public | exodus_extract_date     | date                        | bytea, integer, integer, integer
 public | exodus_extract_datetime | timestamp without time zone | bytea, integer, integer, integer
 public | exodus_extract_sort     | text                        | bytea, integer, integer, integer
 public | exodus_extract_text     | text                        | bytea, integer, integer, integer
 public | exodus_extract_text2    | text                        | bytea, integer, integer, integer
 public | exodus_extract_time     | time without time zone      | bytea, integer, integer, integer
(8 rows)

For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html

Quit postgres command prompt

\q

Unless you are only going to run Exodus as user "exodus" from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)

For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html

nano ~/data/pg_hba.conf

or for Ubuntu

sudo nano /etc/postgresql/8.3/main/pg_hba.conf

comment out the following lines. NB DONT comment out any other similar lines esp. ones containining "postgres"

#local   all         all                               ident sameuser
#host    all         all         127.0.0.1/32          ident sameuser

and add these lines which allows the 'postgres' user local access through ident authentication, which is needed for cron scripts. The second line, allows anyone to connect locally on 127.0.0.1 if they can provide a valid username and password.

local   all         postgres                          ident sameuser
host    all         all         127.0.0.1         255.255.255.255   md5

quit postgres user

exit

Reload Postgres

sudo /etc/init.d/postgresql reload
or
sudo /etc/init.d/postgresql-8.3 restart