Log of an installation of libexodus on Centos 5.3: Difference between revisions
(→Exodus) |
|||
(4 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
sudo yum update | sudo yum update | ||
sudo yum install boost-devel postgresql-devel | |||
sudo yum install gcc-c++ boost-devel postgresql-devel postgresql-server | |||
Centos needs you to start the database manually. Ubuntu doesnt. | Centos needs you to start the database manually. Ubuntu doesnt. | ||
Line 10: | Line 11: | ||
=== Exodus === | === Exodus === | ||
wget http://exodusdb.googlecode.com/files/exodus-10.10.5.tar.gz | |||
tar xvfz exodus-10.10.5.tar.gz | |||
cd exodus-10.10.5 | |||
cd | |||
./configure | ./configure | ||
make | make && sudo make install | ||
=== Setting up Postgres for Exodus === | === Setting up Postgres for Exodus === | ||
==== Register the | ==== Register the pgexodus plugin ==== | ||
Assume identity of a postgres superuser | Assume identity of a postgres superuser | ||
Line 94: | Line 85: | ||
nano /etc/postgresql/8.3/main/pg_hba.conf | nano /etc/postgresql/8.3/main/pg_hba.conf | ||
comment out the following | Allow any postgres user to login with a password via interprocess tcp/ip. | ||
comment out the following line. | |||
#host all all 127.0.0.1/32 ident sameuser | #host all all 127.0.0.1/32 ident sameuser | ||
and add | and add the following: | ||
host all all 127.0.0.1/32 md5 | |||
host all all 127.0.0.1 | |||
quit postgres user | quit postgres user | ||
Line 120: | Line 112: | ||
=== Testing === | === Testing === | ||
{{exodus console first steps}} | |||
} | |||
} | |||
Latest revision as of 14:01, 24 November 2010
Preparation
sudo yum update
sudo yum install gcc-c++ boost-devel postgresql-devel postgresql-server
Centos needs you to start the database manually. Ubuntu doesnt.
sudo /etc/init.d/postgresql start
Exodus
wget http://exodusdb.googlecode.com/files/exodus-10.10.5.tar.gz tar xvfz exodus-10.10.5.tar.gz cd exodus-10.10.5
./configure make && sudo make install
Setting up Postgres for Exodus
Register the pgexodus plugin
Assume identity of a postgres superuser
sudo su - postgres
On Mac OSX only, ensure postgres can be found. Change 8.3 to your version) and check pg_config can run)
PATH=/Library/PostgreSQL/8.3/bin/:$PATH pg_config
Log in to postgres as a postgres superuser and connect to database template1
psql -U postgres -d template1 \connect template1
-- 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
Create a user and database for exodus
Use the example password for now to avoid further configuration in exodus.
CREATE ROLE exodus LOGIN PASSWORD 'somesillysecret' CREATEDB CREATEROLE; CREATE DATABASE exodus WITH ENCODING='UTF8' OWNER=exodus;
Quit postgres command prompt
\q
Ensure Exodus can logon to postgres
Edit pg_hba.conf
Unless you are only going to run Exodus as user "exodus" from the local machine, grant login from 127.0.0.1 using username/encrypted password (instead of only "ident sameuser" which means the logged-in username without password) For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html
Redhat/Centos/MacOSX
nano ~/data/pg_hba.conf
or for Ubuntu
nano /etc/postgresql/8.3/main/pg_hba.conf
Allow any postgres user to login with a password via interprocess tcp/ip.
comment out the following line.
#host all all 127.0.0.1/32 ident sameuser
and add the following:
host all all 127.0.0.1/32 md5
quit postgres user
exit
Reload Postgres
Redhat/Centos
sudo /etc/init.d/postgresql reload
or Ubuntu
sudo /etc/init.d/postgresql-8.3 reload
or MacOSX
sudo su postgres /Library/PostgreSQL/8.3/bin/pg_ctl reload -D /Library/PostgreSQL/8.3/data exit
Testing
Try the following commands.
Command | Comment |
---|---|
EDITING AND COMPILING | |
edic hello | edic=edit+compile+catalog. Creates a skeleton hello.cpp file using nano editor. edic will only compile on exit if saved, so make some change before you exit. |
hello | Run it |
compile hello | compile without editing |
edic testsort | Browse a sample exodus program showing all fundamental database operations including dictionaries and list. |
compile testsort | compile the preinstalled test program |
testsort | Run it to generate some data and inspect the output |
DATABASE OPERATIONS | |
listfiles | quick tool avoiding need to use any database client |
list myclients | text output - no page/column headers just yet sorry |
list myclients {H} | html output (port of a fully blown LIST replacement in heavy production use since 2000) |
list dict_myclients | NB the underscore after "dict" is *required*. "dict(SPACE)myclients" wont work |
list dict_voc | if you understand this then you understand your pick |
edir myclients SB001 | you can edit data or dictionaries directly. edir="edit record" |
delete myclients SB001 | useful command line tool |
createfile tempfile | ditto |
deletefile tempfile | ditto |
createindex myclients CLIENT_TYPE | speeds up select commands on the indexed fields in the traditional way |
deleteindex myclients CLIENT_TYPE | filenames are case insensitive, keys and fieldnames are CASE SENSITIVE |
If you get the following error then you have not completed the installation of the Exodus plugin for Postgres.
PGRES_FATAL_ERROR: ERROR: function exodus_extract_text(bytea, integer, integer, integer) does not exist