<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://devwiki.neosys.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=85.17.154.66</id>
	<title>NEOSYS Dev Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://devwiki.neosys.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=85.17.154.66"/>
	<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Special:Contributions/85.17.154.66"/>
	<updated>2026-08-08T08:05:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Centos_5.3&amp;diff=608</id>
		<title>Log of an installation of libexodus on Centos 5.3</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Centos_5.3&amp;diff=608"/>
		<updated>2009-07-19T16:31:37Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Ensure Exodus can logon to postgres */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Preparation ===&lt;br /&gt;
&lt;br /&gt;
 sudo yum update&lt;br /&gt;
 sudo yum install boost-devel postgresql-devel gcc-c++ subversion postgresql-server&lt;br /&gt;
&lt;br /&gt;
Centos needs you to start the database manually. Ubuntu doesnt.&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql start&lt;br /&gt;
&lt;br /&gt;
=== Exodus ===&lt;br /&gt;
&lt;br /&gt;
For the latest version of the software:&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk&lt;br /&gt;
&lt;br /&gt;
Or for not the latest:&lt;br /&gt;
 wget http://www.neosys.com/support/exodus_all-9.6.tar.gz&lt;br /&gt;
 tar xvfz exodus_all-9.6.tar.gz&lt;br /&gt;
 cd exodus_all-9.6&lt;br /&gt;
&lt;br /&gt;
Classic installation steps&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
==== Register the exodus functions ====&lt;br /&gt;
&lt;br /&gt;
Assume identity of a postgres superuser&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
On Mac OSX only, ensure postgres can be found. Change 8.3 to your version) and check pg_config can run)&lt;br /&gt;
&lt;br /&gt;
 PATH=/Library/PostgreSQL/8.3/bin/:$PATH&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
Log in to postgres as a postgres superuser and connect to database template1&lt;br /&gt;
&lt;br /&gt;
 psql -U postgres -d template1&lt;br /&gt;
 \connect template1&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly (count them)&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                                  List of functions&lt;br /&gt;
 Schema |          Name           |      Result data type       |                 Argument data types&lt;br /&gt;
--------+-------------------------+-----------------------------+-----------------------------------------------------&lt;br /&gt;
 public | exodus_call             | bytea                       | bytea, bytea, bytea, bytea, bytea, integer, integer&lt;br /&gt;
 public | exodus_extract_bytea    | bytea                       | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_date     | date                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_datetime | timestamp without time zone | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_sort     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text2    | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_time     | time without time zone      | bytea, integer, integer, integer&lt;br /&gt;
(8 rows)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
==== Create a user and database for exodus ====&lt;br /&gt;
&lt;br /&gt;
Use the example password for now to avoid further configuration in exodus.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
==== Ensure Exodus can logon to postgres ====&lt;br /&gt;
&lt;br /&gt;
===== Edit pg_hba.conf =====&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/encrypted password (instead of only &amp;quot;ident sameuser&amp;quot; which means the logged-in username without password) For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
Redhat/Centos/MacOSX&lt;br /&gt;
 nano ~/data/pg_hba.conf&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines. NB DONT comment out any other similar lines esp. ones containining &amp;quot;postgres&amp;quot;&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines which allows the &#039;postgres&#039; 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.&lt;br /&gt;
&lt;br /&gt;
 local   all         postgres                          ident sameuser&lt;br /&gt;
 host    all         all         127.0.0.1         255.255.255.255   md5&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Reload Postgres&lt;br /&gt;
&lt;br /&gt;
Redhat/Centos&lt;br /&gt;
 sudo /etc/init.d/postgresql reload&lt;br /&gt;
or Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 reload&lt;br /&gt;
or MacOSX&lt;br /&gt;
 sudo su postgres&lt;br /&gt;
 /Library/PostgreSQL/8.3/bin/pg_ctl reload -D /Library/PostgreSQL/8.3/data&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Test exodus library ====&lt;br /&gt;
&lt;br /&gt;
 nano test1.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
program() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
	print(oconv(date(),&amp;quot;D&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test1.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
 27 JUN 2009&lt;br /&gt;
 27 JUN 2009&lt;br /&gt;
&lt;br /&gt;
==== Test database connection ====&lt;br /&gt;
&lt;br /&gt;
 nano test2.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
program() {&lt;br /&gt;
	createfile(&amp;quot;exodustest&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test2.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
 NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;exodustest_pkey&amp;quot; for table &amp;quot;exodustest&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Test symbolic dictionaries (call backs) ====&lt;br /&gt;
&lt;br /&gt;
 nano test3.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
program() {&lt;br /&gt;
&lt;br /&gt;
        var testfilename=&amp;quot;test_symbolics&amp;quot;;&lt;br /&gt;
        createfile(&amp;quot;dict_&amp;quot;^testfilename);&lt;br /&gt;
        write(&amp;quot;F&amp;quot;^FM^0^FM^&amp;quot;ID&amp;quot;,&amp;quot;dict_&amp;quot;^testfilename,&amp;quot;ID&amp;quot;);&lt;br /&gt;
        write(&amp;quot;S&amp;quot;^FM^FM^&amp;quot;Col1&amp;quot;,&amp;quot;dict_&amp;quot;^testfilename,&amp;quot;SYMCOL1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        createfile(testfilename);&lt;br /&gt;
        write(1000^FM^2000,testfilename,&amp;quot;3000&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        select(&amp;quot;select &amp;quot;^testfilename^&amp;quot; with SYMCOL1 = 3000 or with ID = 3000&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        //should fail since have not installed a function to handle symbolics in this test&lt;br /&gt;
        //but it shows that everything else is working&lt;br /&gt;
        var key1;&lt;br /&gt;
        if (not readnext(key1))&lt;br /&gt;
                stop(&amp;quot;Cannot readnext (as expected)&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test3.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expected result is which means everything is working and we can implement symbolic dictionaries in exodus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;dict_test_symbolics_pkey&amp;quot; for table &amp;quot;dict_test_symbolics&amp;quot;&lt;br /&gt;
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;test_symbolics_pkey&amp;quot; for table &amp;quot;test_symbolics&amp;quot;&lt;br /&gt;
PGRES_FATAL_ERROR: ERROR:  pgexodus exodus_call failed. (MVCipc() TEST_SYMBOLICS unknown filename)&lt;br /&gt;
Cannot readnext (as expected)&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Centos_5.3&amp;diff=607</id>
		<title>Log of an installation of libexodus on Centos 5.3</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Centos_5.3&amp;diff=607"/>
		<updated>2009-07-19T16:19:13Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Ensure Exodus can logon to postgres */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Preparation ===&lt;br /&gt;
&lt;br /&gt;
 sudo yum update&lt;br /&gt;
 sudo yum install boost-devel postgresql-devel gcc-c++ subversion postgresql-server&lt;br /&gt;
&lt;br /&gt;
Centos needs you to start the database manually. Ubuntu doesnt.&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql start&lt;br /&gt;
&lt;br /&gt;
=== Exodus ===&lt;br /&gt;
&lt;br /&gt;
For the latest version of the software:&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk&lt;br /&gt;
&lt;br /&gt;
Or for not the latest:&lt;br /&gt;
 wget http://www.neosys.com/support/exodus_all-9.6.tar.gz&lt;br /&gt;
 tar xvfz exodus_all-9.6.tar.gz&lt;br /&gt;
 cd exodus_all-9.6&lt;br /&gt;
&lt;br /&gt;
Classic installation steps&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
==== Register the exodus functions ====&lt;br /&gt;
&lt;br /&gt;
Assume identity of a postgres superuser&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
On Mac OSX only, ensure postgres can be found. Change 8.3 to your version) and check pg_config can run)&lt;br /&gt;
&lt;br /&gt;
 PATH=/Library/PostgreSQL/8.3/bin/:$PATH&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
Log in to postgres as a postgres superuser and connect to database template1&lt;br /&gt;
&lt;br /&gt;
 psql -U postgres -d template1&lt;br /&gt;
 \connect template1&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly (count them)&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                                  List of functions&lt;br /&gt;
 Schema |          Name           |      Result data type       |                 Argument data types&lt;br /&gt;
--------+-------------------------+-----------------------------+-----------------------------------------------------&lt;br /&gt;
 public | exodus_call             | bytea                       | bytea, bytea, bytea, bytea, bytea, integer, integer&lt;br /&gt;
 public | exodus_extract_bytea    | bytea                       | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_date     | date                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_datetime | timestamp without time zone | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_sort     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text2    | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_time     | time without time zone      | bytea, integer, integer, integer&lt;br /&gt;
(8 rows)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
==== Create a user and database for exodus ====&lt;br /&gt;
&lt;br /&gt;
Use the example password for now to avoid further configuration in exodus.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
==== Ensure Exodus can logon to postgres ====&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/encrypted password (instead of only &amp;quot;ident sameuser&amp;quot; which means the logged-in username without password) For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
Redhat/Centos/MacOSX&lt;br /&gt;
 nano ~/data/pg_hba.conf&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines. NB DONT comment out any other similar lines esp. ones containining &amp;quot;postgres&amp;quot;&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines which allows the &#039;postgres&#039; 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.&lt;br /&gt;
&lt;br /&gt;
 local   all         postgres                          ident sameuser&lt;br /&gt;
 host    all         all         127.0.0.1         255.255.255.255   md5&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Reload Postgres&lt;br /&gt;
&lt;br /&gt;
Centos&lt;br /&gt;
 sudo /etc/init.d/postgresql reload&lt;br /&gt;
or Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 reload&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Test exodus library ====&lt;br /&gt;
&lt;br /&gt;
 nano test1.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
program() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
	print(oconv(date(),&amp;quot;D&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test1.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
 27 JUN 2009&lt;br /&gt;
 27 JUN 2009&lt;br /&gt;
&lt;br /&gt;
==== Test database connection ====&lt;br /&gt;
&lt;br /&gt;
 nano test2.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
program() {&lt;br /&gt;
	createfile(&amp;quot;exodustest&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test2.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
 NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;exodustest_pkey&amp;quot; for table &amp;quot;exodustest&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Test symbolic dictionaries (call backs) ====&lt;br /&gt;
&lt;br /&gt;
 nano test3.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
program() {&lt;br /&gt;
&lt;br /&gt;
        var testfilename=&amp;quot;test_symbolics&amp;quot;;&lt;br /&gt;
        createfile(&amp;quot;dict_&amp;quot;^testfilename);&lt;br /&gt;
        write(&amp;quot;F&amp;quot;^FM^0^FM^&amp;quot;ID&amp;quot;,&amp;quot;dict_&amp;quot;^testfilename,&amp;quot;ID&amp;quot;);&lt;br /&gt;
        write(&amp;quot;S&amp;quot;^FM^FM^&amp;quot;Col1&amp;quot;,&amp;quot;dict_&amp;quot;^testfilename,&amp;quot;SYMCOL1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        createfile(testfilename);&lt;br /&gt;
        write(1000^FM^2000,testfilename,&amp;quot;3000&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        select(&amp;quot;select &amp;quot;^testfilename^&amp;quot; with SYMCOL1 = 3000 or with ID = 3000&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        //should fail since have not installed a function to handle symbolics in this test&lt;br /&gt;
        //but it shows that everything else is working&lt;br /&gt;
        var key1;&lt;br /&gt;
        if (not readnext(key1))&lt;br /&gt;
                stop(&amp;quot;Cannot readnext (as expected)&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test3.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expected result is which means everything is working and we can implement symbolic dictionaries in exodus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;dict_test_symbolics_pkey&amp;quot; for table &amp;quot;dict_test_symbolics&amp;quot;&lt;br /&gt;
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;test_symbolics_pkey&amp;quot; for table &amp;quot;test_symbolics&amp;quot;&lt;br /&gt;
PGRES_FATAL_ERROR: ERROR:  pgexodus exodus_call failed. (MVCipc() TEST_SYMBOLICS unknown filename)&lt;br /&gt;
Cannot readnext (as expected)&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Centos_5.3&amp;diff=606</id>
		<title>Log of an installation of libexodus on Centos 5.3</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Centos_5.3&amp;diff=606"/>
		<updated>2009-07-19T16:10:10Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Register the exodus functions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Preparation ===&lt;br /&gt;
&lt;br /&gt;
 sudo yum update&lt;br /&gt;
 sudo yum install boost-devel postgresql-devel gcc-c++ subversion postgresql-server&lt;br /&gt;
&lt;br /&gt;
Centos needs you to start the database manually. Ubuntu doesnt.&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql start&lt;br /&gt;
&lt;br /&gt;
=== Exodus ===&lt;br /&gt;
&lt;br /&gt;
For the latest version of the software:&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk&lt;br /&gt;
&lt;br /&gt;
Or for not the latest:&lt;br /&gt;
 wget http://www.neosys.com/support/exodus_all-9.6.tar.gz&lt;br /&gt;
 tar xvfz exodus_all-9.6.tar.gz&lt;br /&gt;
 cd exodus_all-9.6&lt;br /&gt;
&lt;br /&gt;
Classic installation steps&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
==== Register the exodus functions ====&lt;br /&gt;
&lt;br /&gt;
Assume identity of a postgres superuser&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
On Mac OSX only, ensure postgres can be found. Change 8.3 to your version) and check pg_config can run)&lt;br /&gt;
&lt;br /&gt;
 PATH=/Library/PostgreSQL/8.3/bin/:$PATH&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
Log in to postgres as a postgres superuser and connect to database template1&lt;br /&gt;
&lt;br /&gt;
 psql -U postgres -d template1&lt;br /&gt;
 \connect template1&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly (count them)&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                                  List of functions&lt;br /&gt;
 Schema |          Name           |      Result data type       |                 Argument data types&lt;br /&gt;
--------+-------------------------+-----------------------------+-----------------------------------------------------&lt;br /&gt;
 public | exodus_call             | bytea                       | bytea, bytea, bytea, bytea, bytea, integer, integer&lt;br /&gt;
 public | exodus_extract_bytea    | bytea                       | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_date     | date                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_datetime | timestamp without time zone | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_sort     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text2    | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_time     | time without time zone      | bytea, integer, integer, integer&lt;br /&gt;
(8 rows)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
==== Create a user and database for exodus ====&lt;br /&gt;
&lt;br /&gt;
Use the example password for now to avoid further configuration in exodus.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
==== Ensure Exodus can logon to postgres ====&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/encrypted password (instead of only logged-in username without password) For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
Centos&lt;br /&gt;
 nano ~/data/pg_hba.conf&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines. NB DONT comment out any other similar lines esp. ones containining &amp;quot;postgres&amp;quot;&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines which allows the &#039;postgres&#039; 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.&lt;br /&gt;
&lt;br /&gt;
 local   all         postgres                          ident sameuser&lt;br /&gt;
 host    all         all         127.0.0.1         255.255.255.255   md5&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Reload Postgres&lt;br /&gt;
&lt;br /&gt;
Centos&lt;br /&gt;
 sudo /etc/init.d/postgresql reload&lt;br /&gt;
or Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 reload&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Test exodus library ====&lt;br /&gt;
&lt;br /&gt;
 nano test1.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
program() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
	print(oconv(date(),&amp;quot;D&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test1.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
 27 JUN 2009&lt;br /&gt;
 27 JUN 2009&lt;br /&gt;
&lt;br /&gt;
==== Test database connection ====&lt;br /&gt;
&lt;br /&gt;
 nano test2.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
program() {&lt;br /&gt;
	createfile(&amp;quot;exodustest&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test2.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
 NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;exodustest_pkey&amp;quot; for table &amp;quot;exodustest&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Test symbolic dictionaries (call backs) ====&lt;br /&gt;
&lt;br /&gt;
 nano test3.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
program() {&lt;br /&gt;
&lt;br /&gt;
        var testfilename=&amp;quot;test_symbolics&amp;quot;;&lt;br /&gt;
        createfile(&amp;quot;dict_&amp;quot;^testfilename);&lt;br /&gt;
        write(&amp;quot;F&amp;quot;^FM^0^FM^&amp;quot;ID&amp;quot;,&amp;quot;dict_&amp;quot;^testfilename,&amp;quot;ID&amp;quot;);&lt;br /&gt;
        write(&amp;quot;S&amp;quot;^FM^FM^&amp;quot;Col1&amp;quot;,&amp;quot;dict_&amp;quot;^testfilename,&amp;quot;SYMCOL1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        createfile(testfilename);&lt;br /&gt;
        write(1000^FM^2000,testfilename,&amp;quot;3000&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        select(&amp;quot;select &amp;quot;^testfilename^&amp;quot; with SYMCOL1 = 3000 or with ID = 3000&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        //should fail since have not installed a function to handle symbolics in this test&lt;br /&gt;
        //but it shows that everything else is working&lt;br /&gt;
        var key1;&lt;br /&gt;
        if (not readnext(key1))&lt;br /&gt;
                stop(&amp;quot;Cannot readnext (as expected)&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test3.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expected result is which means everything is working and we can implement symbolic dictionaries in exodus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;dict_test_symbolics_pkey&amp;quot; for table &amp;quot;dict_test_symbolics&amp;quot;&lt;br /&gt;
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;test_symbolics_pkey&amp;quot; for table &amp;quot;test_symbolics&amp;quot;&lt;br /&gt;
PGRES_FATAL_ERROR: ERROR:  pgexodus exodus_call failed. (MVCipc() TEST_SYMBOLICS unknown filename)&lt;br /&gt;
Cannot readnext (as expected)&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Centos_5.3&amp;diff=605</id>
		<title>Log of an installation of libexodus on Centos 5.3</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Centos_5.3&amp;diff=605"/>
		<updated>2009-07-19T15:53:13Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Register the exodus functions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Preparation ===&lt;br /&gt;
&lt;br /&gt;
 sudo yum update&lt;br /&gt;
 sudo yum install boost-devel postgresql-devel gcc-c++ subversion postgresql-server&lt;br /&gt;
&lt;br /&gt;
Centos needs you to start the database manually. Ubuntu doesnt.&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql start&lt;br /&gt;
&lt;br /&gt;
=== Exodus ===&lt;br /&gt;
&lt;br /&gt;
For the latest version of the software:&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk&lt;br /&gt;
&lt;br /&gt;
Or for not the latest:&lt;br /&gt;
 wget http://www.neosys.com/support/exodus_all-9.6.tar.gz&lt;br /&gt;
 tar xvfz exodus_all-9.6.tar.gz&lt;br /&gt;
 cd exodus_all-9.6&lt;br /&gt;
&lt;br /&gt;
Classic installation steps&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
==== Register the exodus functions ====&lt;br /&gt;
&lt;br /&gt;
(on Mac OSX, ensure postgres can be found. Change 8.3 to your version) and check pg_config can run)&lt;br /&gt;
&lt;br /&gt;
 PATH=/Library/PostgreSQL/8.3/bin/:$PATH&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
log in to postgres template1 database as a superuser&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql -U postgres -d template1&lt;br /&gt;
 \connect template1&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly (count them)&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                                  List of functions&lt;br /&gt;
 Schema |          Name           |      Result data type       |                 Argument data types&lt;br /&gt;
--------+-------------------------+-----------------------------+-----------------------------------------------------&lt;br /&gt;
 public | exodus_call             | bytea                       | bytea, bytea, bytea, bytea, bytea, integer, integer&lt;br /&gt;
 public | exodus_extract_bytea    | bytea                       | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_date     | date                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_datetime | timestamp without time zone | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_sort     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text2    | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_time     | time without time zone      | bytea, integer, integer, integer&lt;br /&gt;
(8 rows)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
==== Create a user and database for exodus ====&lt;br /&gt;
&lt;br /&gt;
Use the example password for now to avoid further configuration in exodus.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
==== Ensure Exodus can logon to postgres ====&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/encrypted password (instead of only logged-in username without password) For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
Centos&lt;br /&gt;
 nano ~/data/pg_hba.conf&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines. NB DONT comment out any other similar lines esp. ones containining &amp;quot;postgres&amp;quot;&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines which allows the &#039;postgres&#039; 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.&lt;br /&gt;
&lt;br /&gt;
 local   all         postgres                          ident sameuser&lt;br /&gt;
 host    all         all         127.0.0.1         255.255.255.255   md5&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Reload Postgres&lt;br /&gt;
&lt;br /&gt;
Centos&lt;br /&gt;
 sudo /etc/init.d/postgresql reload&lt;br /&gt;
or Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 reload&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Test exodus library ====&lt;br /&gt;
&lt;br /&gt;
 nano test1.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
program() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
	print(oconv(date(),&amp;quot;D&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test1.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
 27 JUN 2009&lt;br /&gt;
 27 JUN 2009&lt;br /&gt;
&lt;br /&gt;
==== Test database connection ====&lt;br /&gt;
&lt;br /&gt;
 nano test2.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
program() {&lt;br /&gt;
	createfile(&amp;quot;exodustest&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test2.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
 NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;exodustest_pkey&amp;quot; for table &amp;quot;exodustest&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Test symbolic dictionaries (call backs) ====&lt;br /&gt;
&lt;br /&gt;
 nano test3.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
program() {&lt;br /&gt;
&lt;br /&gt;
        var testfilename=&amp;quot;test_symbolics&amp;quot;;&lt;br /&gt;
        createfile(&amp;quot;dict_&amp;quot;^testfilename);&lt;br /&gt;
        write(&amp;quot;F&amp;quot;^FM^0^FM^&amp;quot;ID&amp;quot;,&amp;quot;dict_&amp;quot;^testfilename,&amp;quot;ID&amp;quot;);&lt;br /&gt;
        write(&amp;quot;S&amp;quot;^FM^FM^&amp;quot;Col1&amp;quot;,&amp;quot;dict_&amp;quot;^testfilename,&amp;quot;SYMCOL1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        createfile(testfilename);&lt;br /&gt;
        write(1000^FM^2000,testfilename,&amp;quot;3000&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        select(&amp;quot;select &amp;quot;^testfilename^&amp;quot; with SYMCOL1 = 3000 or with ID = 3000&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        //should fail since have not installed a function to handle symbolics in this test&lt;br /&gt;
        //but it shows that everything else is working&lt;br /&gt;
        var key1;&lt;br /&gt;
        if (not readnext(key1))&lt;br /&gt;
                stop(&amp;quot;Cannot readnext (as expected)&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test3.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expected result is which means everything is working and we can implement symbolic dictionaries in exodus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;dict_test_symbolics_pkey&amp;quot; for table &amp;quot;dict_test_symbolics&amp;quot;&lt;br /&gt;
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;test_symbolics_pkey&amp;quot; for table &amp;quot;test_symbolics&amp;quot;&lt;br /&gt;
PGRES_FATAL_ERROR: ERROR:  pgexodus exodus_call failed. (MVCipc() TEST_SYMBOLICS unknown filename)&lt;br /&gt;
Cannot readnext (as expected)&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Centos_5.3&amp;diff=604</id>
		<title>Log of an installation of libexodus on Centos 5.3</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Centos_5.3&amp;diff=604"/>
		<updated>2009-07-19T15:52:56Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Register the exodus functions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Preparation ===&lt;br /&gt;
&lt;br /&gt;
 sudo yum update&lt;br /&gt;
 sudo yum install boost-devel postgresql-devel gcc-c++ subversion postgresql-server&lt;br /&gt;
&lt;br /&gt;
Centos needs you to start the database manually. Ubuntu doesnt.&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql start&lt;br /&gt;
&lt;br /&gt;
=== Exodus ===&lt;br /&gt;
&lt;br /&gt;
For the latest version of the software:&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk&lt;br /&gt;
&lt;br /&gt;
Or for not the latest:&lt;br /&gt;
 wget http://www.neosys.com/support/exodus_all-9.6.tar.gz&lt;br /&gt;
 tar xvfz exodus_all-9.6.tar.gz&lt;br /&gt;
 cd exodus_all-9.6&lt;br /&gt;
&lt;br /&gt;
Classic installation steps&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
==== Register the exodus functions ====&lt;br /&gt;
&lt;br /&gt;
(on Mac OSX, ensure postgres can be found. Change 8.3 to your version) and check pg_config can run)&lt;br /&gt;
&lt;br /&gt;
 PATH=/Library/PostgreSQL/8.3/bin/:$PATH&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
log in to postgres template1 database as a superuser&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
 psql -U postgres -d template1&lt;br /&gt;
 \connect template1&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly (count them)&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                                  List of functions&lt;br /&gt;
 Schema |          Name           |      Result data type       |                 Argument data types&lt;br /&gt;
--------+-------------------------+-----------------------------+-----------------------------------------------------&lt;br /&gt;
 public | exodus_call             | bytea                       | bytea, bytea, bytea, bytea, bytea, integer, integer&lt;br /&gt;
 public | exodus_extract_bytea    | bytea                       | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_date     | date                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_datetime | timestamp without time zone | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_sort     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text2    | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_time     | time without time zone      | bytea, integer, integer, integer&lt;br /&gt;
(8 rows)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
==== Create a user and database for exodus ====&lt;br /&gt;
&lt;br /&gt;
Use the example password for now to avoid further configuration in exodus.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
==== Ensure Exodus can logon to postgres ====&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/encrypted password (instead of only logged-in username without password) For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
Centos&lt;br /&gt;
 nano ~/data/pg_hba.conf&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines. NB DONT comment out any other similar lines esp. ones containining &amp;quot;postgres&amp;quot;&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines which allows the &#039;postgres&#039; 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.&lt;br /&gt;
&lt;br /&gt;
 local   all         postgres                          ident sameuser&lt;br /&gt;
 host    all         all         127.0.0.1         255.255.255.255   md5&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Reload Postgres&lt;br /&gt;
&lt;br /&gt;
Centos&lt;br /&gt;
 sudo /etc/init.d/postgresql reload&lt;br /&gt;
or Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 reload&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Test exodus library ====&lt;br /&gt;
&lt;br /&gt;
 nano test1.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
program() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
	print(oconv(date(),&amp;quot;D&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test1.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
 27 JUN 2009&lt;br /&gt;
 27 JUN 2009&lt;br /&gt;
&lt;br /&gt;
==== Test database connection ====&lt;br /&gt;
&lt;br /&gt;
 nano test2.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
program() {&lt;br /&gt;
	createfile(&amp;quot;exodustest&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test2.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
 NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;exodustest_pkey&amp;quot; for table &amp;quot;exodustest&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Test symbolic dictionaries (call backs) ====&lt;br /&gt;
&lt;br /&gt;
 nano test3.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
program() {&lt;br /&gt;
&lt;br /&gt;
        var testfilename=&amp;quot;test_symbolics&amp;quot;;&lt;br /&gt;
        createfile(&amp;quot;dict_&amp;quot;^testfilename);&lt;br /&gt;
        write(&amp;quot;F&amp;quot;^FM^0^FM^&amp;quot;ID&amp;quot;,&amp;quot;dict_&amp;quot;^testfilename,&amp;quot;ID&amp;quot;);&lt;br /&gt;
        write(&amp;quot;S&amp;quot;^FM^FM^&amp;quot;Col1&amp;quot;,&amp;quot;dict_&amp;quot;^testfilename,&amp;quot;SYMCOL1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        createfile(testfilename);&lt;br /&gt;
        write(1000^FM^2000,testfilename,&amp;quot;3000&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        select(&amp;quot;select &amp;quot;^testfilename^&amp;quot; with SYMCOL1 = 3000 or with ID = 3000&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        //should fail since have not installed a function to handle symbolics in this test&lt;br /&gt;
        //but it shows that everything else is working&lt;br /&gt;
        var key1;&lt;br /&gt;
        if (not readnext(key1))&lt;br /&gt;
                stop(&amp;quot;Cannot readnext (as expected)&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test3.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expected result is which means everything is working and we can implement symbolic dictionaries in exodus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;dict_test_symbolics_pkey&amp;quot; for table &amp;quot;dict_test_symbolics&amp;quot;&lt;br /&gt;
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;test_symbolics_pkey&amp;quot; for table &amp;quot;test_symbolics&amp;quot;&lt;br /&gt;
PGRES_FATAL_ERROR: ERROR:  pgexodus exodus_call failed. (MVCipc() TEST_SYMBOLICS unknown filename)&lt;br /&gt;
Cannot readnext (as expected)&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Building_on_Mac&amp;diff=603</id>
		<title>Building on Mac</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Building_on_Mac&amp;diff=603"/>
		<updated>2009-07-18T22:50:25Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Building and Installing exodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Installing Exodus on Mac is almost identical to installing on Linux but it is a little harder to acquire and configure the dependencies.&lt;br /&gt;
&lt;br /&gt;
This install was performed on OSX 10.5.5 (Leopard)&lt;br /&gt;
&lt;br /&gt;
=== Installing dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing C++ compiler ====&lt;br /&gt;
&lt;br /&gt;
Older macs might need to install XCODE tools from http://developer.apple.com after free registration. This is unfortunately a large 1Gb download.&lt;br /&gt;
&lt;br /&gt;
Newer macs have XCODE tools installer in the Applications or Library folder and you just have to install it.&lt;br /&gt;
&lt;br /&gt;
The XCODE package includes subversion&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
http://www.postgresql.org/download/macosx&lt;br /&gt;
&lt;br /&gt;
http://www.enterprisedb.com/products/pgdownload.do#osx&lt;br /&gt;
&lt;br /&gt;
http://www.enterprisedb.com/getfile.jsp?fileid=484&lt;br /&gt;
&lt;br /&gt;
Once downloaded, just do a standard install and remember the admin user password.&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_33. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex. How to do this on Mac OSX is unknown at the moment.&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
In safari get http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2 and move it to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open a classic console shell (terminal)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,regex,thread&lt;br /&gt;
&lt;br /&gt;
Optionally, speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 sudo ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
=== Building and Installing exodus ===&lt;br /&gt;
&lt;br /&gt;
Download Exodus using Subversion&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus&lt;br /&gt;
&lt;br /&gt;
Ensure postgres can be found (change 8.3 to your version) and check pg_config can run&lt;br /&gt;
&lt;br /&gt;
 PATH=/Library/PostgreSQL/8.3/bin/:$PATH&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
Confirm where your boost libraries are installed and what their suffix is if any.&lt;br /&gt;
&lt;br /&gt;
 find /usr | grep libboost&lt;br /&gt;
&lt;br /&gt;
Use a modified configure command using the boost library suffix from the previous step. The leading - is required.&lt;br /&gt;
&lt;br /&gt;
 ./configure.bsd -xgcc40-mt&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
From here on the steps are almost identical to [[Log_of_an_installation_of_libexodus_on_Centos_5.3]] (start after &amp;quot;sudo make install&amp;quot;)&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Building_on_Mac&amp;diff=602</id>
		<title>Building on Mac</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Building_on_Mac&amp;diff=602"/>
		<updated>2009-07-18T22:50:06Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Building and Installing exodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Installing Exodus on Mac is almost identical to installing on Linux but it is a little harder to acquire and configure the dependencies.&lt;br /&gt;
&lt;br /&gt;
This install was performed on OSX 10.5.5 (Leopard)&lt;br /&gt;
&lt;br /&gt;
=== Installing dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing C++ compiler ====&lt;br /&gt;
&lt;br /&gt;
Older macs might need to install XCODE tools from http://developer.apple.com after free registration. This is unfortunately a large 1Gb download.&lt;br /&gt;
&lt;br /&gt;
Newer macs have XCODE tools installer in the Applications or Library folder and you just have to install it.&lt;br /&gt;
&lt;br /&gt;
The XCODE package includes subversion&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
http://www.postgresql.org/download/macosx&lt;br /&gt;
&lt;br /&gt;
http://www.enterprisedb.com/products/pgdownload.do#osx&lt;br /&gt;
&lt;br /&gt;
http://www.enterprisedb.com/getfile.jsp?fileid=484&lt;br /&gt;
&lt;br /&gt;
Once downloaded, just do a standard install and remember the admin user password.&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_33. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex. How to do this on Mac OSX is unknown at the moment.&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
In safari get http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2 and move it to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open a classic console shell (terminal)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,regex,thread&lt;br /&gt;
&lt;br /&gt;
Optionally, speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 sudo ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
=== Building and Installing exodus ===&lt;br /&gt;
&lt;br /&gt;
Download Exodus using Subversion&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus&lt;br /&gt;
&lt;br /&gt;
Ensure postgres can be found (change 8.3 to your version) and check pg_config can run&lt;br /&gt;
&lt;br /&gt;
 PATH=/Library/PostgreSQL/8.3/bin/:$PATH&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
Confirm where your boost libraries are installed and what their suffix is if any.&lt;br /&gt;
&lt;br /&gt;
 find /usr | grep libboost&lt;br /&gt;
&lt;br /&gt;
Use a modified configure command using the boost library suffix from the previous step. The leading - is required.&lt;br /&gt;
&lt;br /&gt;
 ./configure.bsd -xgcc40-mt&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
From here on the steps are almost identical to [[Log_of_an_installation_of_libexodus_on_Centos_5.3]] (starting after &amp;quot;sudo make install&amp;quot;&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Building_on_Mac&amp;diff=600</id>
		<title>Building on Mac</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Building_on_Mac&amp;diff=600"/>
		<updated>2009-07-18T21:31:53Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Installing Boost */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Installing Exodus on Mac is almost identical to installing on Linux but it is a little harder to acquire and configure the dependencies.&lt;br /&gt;
&lt;br /&gt;
This install was performed on OSX 10.5.5 (Leopard)&lt;br /&gt;
&lt;br /&gt;
=== Installing dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing C++ compiler ====&lt;br /&gt;
&lt;br /&gt;
Older macs might need to install XCODE tools from http://developer.apple.com after free registration. This is unfortunately a large 1Gb download.&lt;br /&gt;
&lt;br /&gt;
Newer macs have XCODE tools installer in the Applications or Library folder and you just have to install it.&lt;br /&gt;
&lt;br /&gt;
The XCODE package includes subversion&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
http://www.postgresql.org/download/macosx&lt;br /&gt;
&lt;br /&gt;
http://www.enterprisedb.com/products/pgdownload.do#osx&lt;br /&gt;
&lt;br /&gt;
http://www.enterprisedb.com/getfile.jsp?fileid=484&lt;br /&gt;
&lt;br /&gt;
Once downloaded, just do a standard install and remember the admin user password.&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_33. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex. How to do this on Mac OSX is unknown at the moment.&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
In safari get http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2 and move it to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open a classic console shell (terminal)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,regex,thread&lt;br /&gt;
&lt;br /&gt;
Optionally, speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 sudo ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
=== Building and Installing exodus ===&lt;br /&gt;
&lt;br /&gt;
Download Exodus using Subversion&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus&lt;br /&gt;
&lt;br /&gt;
Ensure postgres can be found (change 8.3 to your version) and check pg_config can run&lt;br /&gt;
&lt;br /&gt;
 PATH=/Library/PostgreSQL/8.3/bin/:$PATH&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
Confirm where your boost libraries are installed and what their suffix is if any.&lt;br /&gt;
&lt;br /&gt;
 find /usr | grep libboost&lt;br /&gt;
&lt;br /&gt;
Use a modified configure command using the boost library suffix from the previous step. The leading - is required.&lt;br /&gt;
&lt;br /&gt;
 ./configure.bsd -xgcc40-mt&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
An additional installation step that unfortunately has to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 sudo ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
From here on the steps are almost identical to [[Log_of_an_installation_of_libexodus_on_Centos_5.3]]&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Centos_5.3&amp;diff=596</id>
		<title>Log of an installation of libexodus on Centos 5.3</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Centos_5.3&amp;diff=596"/>
		<updated>2009-07-16T17:00:16Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Exodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Preparation ===&lt;br /&gt;
&lt;br /&gt;
 sudo yum update&lt;br /&gt;
 sudo yum install boost-devel postgresql-devel gcc-c++ subversion postgresql-server&lt;br /&gt;
&lt;br /&gt;
Centos needs you to start the database manually. Ubuntu doesnt.&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql start&lt;br /&gt;
&lt;br /&gt;
=== Exodus ===&lt;br /&gt;
&lt;br /&gt;
For the latest version of the software:&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk&lt;br /&gt;
&lt;br /&gt;
Or for not the latest:&lt;br /&gt;
 wget http://www.neosys.com/support/exodus_all-9.6.tar.gz&lt;br /&gt;
 tar xvfz exodus_all-9.6.tar.gz&lt;br /&gt;
 cd exodus_all-9.6&lt;br /&gt;
&lt;br /&gt;
Classic installation steps&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly (count them)&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                                  List of functions&lt;br /&gt;
 Schema |          Name           |      Result data type       |                 Argument data types&lt;br /&gt;
--------+-------------------------+-----------------------------+-----------------------------------------------------&lt;br /&gt;
 public | exodus_call             | bytea                       | bytea, bytea, bytea, bytea, bytea, integer, integer&lt;br /&gt;
 public | exodus_extract_bytea    | bytea                       | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_date     | date                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_datetime | timestamp without time zone | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_sort     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text2    | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_time     | time without time zone      | bytea, integer, integer, integer&lt;br /&gt;
(8 rows)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/encrypted password (instead of only logged-in username without password) For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
Centos&lt;br /&gt;
 nano ~/data/pg_hba.conf&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines. NB DONT comment out any other similar lines esp. ones containining &amp;quot;postgres&amp;quot;&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines which allows the &#039;postgres&#039; 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.&lt;br /&gt;
&lt;br /&gt;
 local   all         postgres                          ident sameuser&lt;br /&gt;
 host    all         all         127.0.0.1         255.255.255.255   md5&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Reload Postgres&lt;br /&gt;
&lt;br /&gt;
Centos&lt;br /&gt;
 sudo /etc/init.d/postgresql reload&lt;br /&gt;
or Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 reload&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Test exodus library ====&lt;br /&gt;
&lt;br /&gt;
 nano test1.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
program() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
	print(oconv(date(),&amp;quot;D&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test1.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
 27 JUN 2009&lt;br /&gt;
 27 JUN 2009&lt;br /&gt;
&lt;br /&gt;
==== Test database connection ====&lt;br /&gt;
&lt;br /&gt;
 nano test2.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
program() {&lt;br /&gt;
	createfile(&amp;quot;exodustest&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test2.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
 NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;exodustest_pkey&amp;quot; for table &amp;quot;exodustest&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Test symbolic dictionaries (call backs) ====&lt;br /&gt;
&lt;br /&gt;
 nano test3.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
program() {&lt;br /&gt;
&lt;br /&gt;
        var testfilename=&amp;quot;test_symbolics&amp;quot;;&lt;br /&gt;
        createfile(&amp;quot;dict_&amp;quot;^testfilename);&lt;br /&gt;
        write(&amp;quot;F&amp;quot;^FM^0^FM^&amp;quot;ID&amp;quot;,&amp;quot;dict_&amp;quot;^testfilename,&amp;quot;ID&amp;quot;);&lt;br /&gt;
        write(&amp;quot;S&amp;quot;^FM^FM^&amp;quot;Col1&amp;quot;,&amp;quot;dict_&amp;quot;^testfilename,&amp;quot;SYMCOL1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        createfile(testfilename);&lt;br /&gt;
        write(1000^FM^2000,testfilename,&amp;quot;3000&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        select(&amp;quot;select &amp;quot;^testfilename^&amp;quot; with SYMCOL1 = 3000 or with ID = 3000&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        //should fail since have not installed a function to handle symbolics in this test&lt;br /&gt;
        //but it shows that everything else is working&lt;br /&gt;
        var key1;&lt;br /&gt;
        if (not readnext(key1))&lt;br /&gt;
                stop(&amp;quot;Cannot readnext (as expected)&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test3.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expected result is which means everything is working and we can implement symbolic dictionaries in exodus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;dict_test_symbolics_pkey&amp;quot; for table &amp;quot;dict_test_symbolics&amp;quot;&lt;br /&gt;
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;test_symbolics_pkey&amp;quot; for table &amp;quot;test_symbolics&amp;quot;&lt;br /&gt;
PGRES_FATAL_ERROR: ERROR:  pgexodus exodus_call failed. (MVCipc() TEST_SYMBOLICS unknown filename)&lt;br /&gt;
Cannot readnext (as expected)&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Centos_5.3&amp;diff=595</id>
		<title>Log of an installation of libexodus on Centos 5.3</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Centos_5.3&amp;diff=595"/>
		<updated>2009-07-16T01:10:34Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Test symbolic dictionaries (call backs) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Preparation ===&lt;br /&gt;
&lt;br /&gt;
 sudo yum update&lt;br /&gt;
 sudo yum install boost-devel postgresql-devel gcc-c++ subversion postgresql-server&lt;br /&gt;
&lt;br /&gt;
Centos needs you to start the database manually. Ubuntu doesnt.&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql start&lt;br /&gt;
&lt;br /&gt;
=== Exodus ===&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly (count them)&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                                  List of functions&lt;br /&gt;
 Schema |          Name           |      Result data type       |                 Argument data types&lt;br /&gt;
--------+-------------------------+-----------------------------+-----------------------------------------------------&lt;br /&gt;
 public | exodus_call             | bytea                       | bytea, bytea, bytea, bytea, bytea, integer, integer&lt;br /&gt;
 public | exodus_extract_bytea    | bytea                       | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_date     | date                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_datetime | timestamp without time zone | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_sort     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text2    | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_time     | time without time zone      | bytea, integer, integer, integer&lt;br /&gt;
(8 rows)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/encrypted password (instead of only logged-in username without password) For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
Centos&lt;br /&gt;
 nano ~/data/pg_hba.conf&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines. NB DONT comment out any other similar lines esp. ones containining &amp;quot;postgres&amp;quot;&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines which allows the &#039;postgres&#039; 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.&lt;br /&gt;
&lt;br /&gt;
 local   all         postgres                          ident sameuser&lt;br /&gt;
 host    all         all         127.0.0.1         255.255.255.255   md5&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Reload Postgres&lt;br /&gt;
&lt;br /&gt;
Centos&lt;br /&gt;
 sudo /etc/init.d/postgresql reload&lt;br /&gt;
or Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 reload&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Test exodus library ====&lt;br /&gt;
&lt;br /&gt;
 nano test1.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
program() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
	print(oconv(date(),&amp;quot;D&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test1.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
 27 JUN 2009&lt;br /&gt;
 27 JUN 2009&lt;br /&gt;
&lt;br /&gt;
==== Test database connection ====&lt;br /&gt;
&lt;br /&gt;
 nano test2.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
program() {&lt;br /&gt;
	createfile(&amp;quot;exodustest&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test2.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
 NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;exodustest_pkey&amp;quot; for table &amp;quot;exodustest&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Test symbolic dictionaries (call backs) ====&lt;br /&gt;
&lt;br /&gt;
 nano test3.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
program() {&lt;br /&gt;
&lt;br /&gt;
        var testfilename=&amp;quot;test_symbolics&amp;quot;;&lt;br /&gt;
        createfile(&amp;quot;dict_&amp;quot;^testfilename);&lt;br /&gt;
        write(&amp;quot;F&amp;quot;^FM^0^FM^&amp;quot;ID&amp;quot;,&amp;quot;dict_&amp;quot;^testfilename,&amp;quot;ID&amp;quot;);&lt;br /&gt;
        write(&amp;quot;S&amp;quot;^FM^FM^&amp;quot;Col1&amp;quot;,&amp;quot;dict_&amp;quot;^testfilename,&amp;quot;SYMCOL1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        createfile(testfilename);&lt;br /&gt;
        write(1000^FM^2000,testfilename,&amp;quot;3000&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        select(&amp;quot;select &amp;quot;^testfilename^&amp;quot; with SYMCOL1 = 3000 or with ID = 3000&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        //should fail since have not installed a function to handle symbolics in this test&lt;br /&gt;
        //but it shows that everything else is working&lt;br /&gt;
        var key1;&lt;br /&gt;
        if (not readnext(key1))&lt;br /&gt;
                stop(&amp;quot;Cannot readnext (as expected)&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test3.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expected result is which means everything is working and we can implement symbolic dictionaries in exodus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;dict_test_symbolics_pkey&amp;quot; for table &amp;quot;dict_test_symbolics&amp;quot;&lt;br /&gt;
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;test_symbolics_pkey&amp;quot; for table &amp;quot;test_symbolics&amp;quot;&lt;br /&gt;
PGRES_FATAL_ERROR: ERROR:  pgexodus exodus_call failed. (MVCipc() TEST_SYMBOLICS unknown filename)&lt;br /&gt;
Cannot readnext (as expected)&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Centos_5.3&amp;diff=594</id>
		<title>Log of an installation of libexodus on Centos 5.3</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Centos_5.3&amp;diff=594"/>
		<updated>2009-07-16T01:05:39Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Exodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Preparation ===&lt;br /&gt;
&lt;br /&gt;
 sudo yum update&lt;br /&gt;
 sudo yum install boost-devel postgresql-devel gcc-c++ subversion postgresql-server&lt;br /&gt;
&lt;br /&gt;
Centos needs you to start the database manually. Ubuntu doesnt.&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql start&lt;br /&gt;
&lt;br /&gt;
=== Exodus ===&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly (count them)&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                                  List of functions&lt;br /&gt;
 Schema |          Name           |      Result data type       |                 Argument data types&lt;br /&gt;
--------+-------------------------+-----------------------------+-----------------------------------------------------&lt;br /&gt;
 public | exodus_call             | bytea                       | bytea, bytea, bytea, bytea, bytea, integer, integer&lt;br /&gt;
 public | exodus_extract_bytea    | bytea                       | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_date     | date                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_datetime | timestamp without time zone | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_sort     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text2    | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_time     | time without time zone      | bytea, integer, integer, integer&lt;br /&gt;
(8 rows)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/encrypted password (instead of only logged-in username without password) For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
Centos&lt;br /&gt;
 nano ~/data/pg_hba.conf&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines. NB DONT comment out any other similar lines esp. ones containining &amp;quot;postgres&amp;quot;&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines which allows the &#039;postgres&#039; 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.&lt;br /&gt;
&lt;br /&gt;
 local   all         postgres                          ident sameuser&lt;br /&gt;
 host    all         all         127.0.0.1         255.255.255.255   md5&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Reload Postgres&lt;br /&gt;
&lt;br /&gt;
Centos&lt;br /&gt;
 sudo /etc/init.d/postgresql reload&lt;br /&gt;
or Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 reload&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
==== Test exodus library ====&lt;br /&gt;
&lt;br /&gt;
 nano test1.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
program() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
	print(oconv(date(),&amp;quot;D&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test1.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
 27 JUN 2009&lt;br /&gt;
 27 JUN 2009&lt;br /&gt;
&lt;br /&gt;
==== Test database connection ====&lt;br /&gt;
&lt;br /&gt;
 nano test2.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
program() {&lt;br /&gt;
	createfile(&amp;quot;exodustest&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test2.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
 NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;exodustest_pkey&amp;quot; for table &amp;quot;exodustest&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Test symbolic dictionaries (call backs) ====&lt;br /&gt;
&lt;br /&gt;
 nano test3.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;exodus.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
program() {&lt;br /&gt;
&lt;br /&gt;
        var testfilename=&amp;quot;test_symbolics&amp;quot;;&lt;br /&gt;
        createfile(&amp;quot;dict_&amp;quot;^testfilename);&lt;br /&gt;
        write(&amp;quot;F&amp;quot;^FM^0^FM^&amp;quot;ID&amp;quot;,&amp;quot;dict_&amp;quot;^testfilename,&amp;quot;ID&amp;quot;);&lt;br /&gt;
        write(&amp;quot;S&amp;quot;^FM^FM^&amp;quot;Col1&amp;quot;,&amp;quot;dict_&amp;quot;^testfilename,&amp;quot;SYMCOL1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        createfile(testfilename);&lt;br /&gt;
        write(1000^FM^2000,testfilename,&amp;quot;3000&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        select(&amp;quot;select &amp;quot;^testfilename^&amp;quot; with SYMCOL1 = 3000 or with ID = 3000&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        //should fail since have not installed a function to handle symbolics in this test&lt;br /&gt;
        //but it shows that everything else is working&lt;br /&gt;
        var key1;&lt;br /&gt;
        if (not readnext(key1))&lt;br /&gt;
                stop(&amp;quot;Cannot readnext (as expected)&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ test3.cpp -lexodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expected result is which means everything is working and we can implement symbolic dictionaries in exodus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;dict_test_symbolics_pkey&amp;quot; for table &amp;quot;dict_test_symbolics&amp;quot;&lt;br /&gt;
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index &amp;quot;test_symbolics_pkey&amp;quot; for table &amp;quot;test_symbolics&amp;quot;&lt;br /&gt;
PGRES_FATAL_ERROR: ERROR:  pgexodus exodus_call failed. (MVCipc() TEST_SYMBOLICS unknown filename)&lt;br /&gt;
Cannot readnext (as expected)&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=575</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=575"/>
		<updated>2009-07-11T21:56:37Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing Exodus ==&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== exodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Building Boost from Source ====&lt;br /&gt;
&lt;br /&gt;
Boost binaries are available for most platform but it can be easier to build from source as follows:&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_32. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
Centos&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
Ubuntu&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build and install Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
Centos - Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new boost libraries are registered for use.&lt;br /&gt;
&lt;br /&gt;
 sudo /sbin/ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 sudo ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Building_on_Mac&amp;diff=574</id>
		<title>Building on Mac</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Building_on_Mac&amp;diff=574"/>
		<updated>2009-07-11T21:20:29Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Installing Exodus on Mac is almost identical to installing on Linux but it is a little harder to acquire and configure the dependencies.&lt;br /&gt;
&lt;br /&gt;
This install was performed on OSX 10.5.5 (Leopard)&lt;br /&gt;
&lt;br /&gt;
=== Installing dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing C++ compiler ====&lt;br /&gt;
&lt;br /&gt;
Older macs might need to install XCODE tools from http://developer.apple.com after free registration. This is unfortunately a large 1Gb download.&lt;br /&gt;
&lt;br /&gt;
Newer macs have XCODE tools installer in the Applications or Library folder and you just have to install it.&lt;br /&gt;
&lt;br /&gt;
The XCODE package includes subversion&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
http://www.postgresql.org/download/macosx&lt;br /&gt;
&lt;br /&gt;
http://www.enterprisedb.com/products/pgdownload.do#osx&lt;br /&gt;
&lt;br /&gt;
http://www.enterprisedb.com/getfile.jsp?fileid=484&lt;br /&gt;
&lt;br /&gt;
Once downloaded, just do a standard install and remember the admin user password.&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_33. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex. How to do this on Mac OSX is unknown at the moment.&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
In safari get http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2 and move it to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open a classic console shell (terminal)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,regex,thread&lt;br /&gt;
&lt;br /&gt;
Optionally, speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 sudo ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
=== Building and Installing libexodus ===&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
Ensure postgres can be found (change 8.3 to your version) and check pg_config can run&lt;br /&gt;
&lt;br /&gt;
 PATH=/Library/PostgreSQL/8.3/bin/:$PATH&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
Find out where your boost libraries are installed and what they are named.&lt;br /&gt;
&lt;br /&gt;
 find /usr | grep libboost&lt;br /&gt;
&lt;br /&gt;
Customise the following command to suit the boost library location and names that you found in the previous step. There might be a configure.bsd file to modify/use.&lt;br /&gt;
&lt;br /&gt;
 ./configure --with-boost-libdir=/usr/local/lib \&lt;br /&gt;
 --with-boost-date-time=boost_date_time-xgcc40-mt \&lt;br /&gt;
 --with-boost-filesystem=boost_filesystem-xgcc40-mt \&lt;br /&gt;
 --with-boost-regex=boost_regex-xgcc40-mt \&lt;br /&gt;
 --with-boost-thread=boost_thread-xgcc40-mt&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
An additional installation step that unfortunately has to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 sudo ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
From here on the steps are almost identical to [[Log_of_an_installation_of_libexodus_on_Centos_5.3]]&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Ubuntu_9.04_Jaunty_Jackalope&amp;diff=573</id>
		<title>Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Ubuntu_9.04_Jaunty_Jackalope&amp;diff=573"/>
		<updated>2009-07-11T18:54:30Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Preparation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Preparation ===&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get upgrade&lt;br /&gt;
 sudo apt-get install postgresql postgresql-server-dev-8.3 libpq-dev libboost-dev build-essential subversion&lt;br /&gt;
&lt;br /&gt;
=== Exodus ===&lt;br /&gt;
&lt;br /&gt;
The rest of the installation is almost identical to [[Log_of_an_installation_of_libexodus_on_Centos_5.3]]&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Ubuntu_9.04_Jaunty_Jackalope&amp;diff=572</id>
		<title>Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Ubuntu_9.04_Jaunty_Jackalope&amp;diff=572"/>
		<updated>2009-07-11T18:52:07Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Preparation ===&lt;br /&gt;
&lt;br /&gt;
 sudo su -&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
 apt-get install postgresql postgresql-server-dev-8.3 libpq-dev libboost-dev build-essential subversion&lt;br /&gt;
&lt;br /&gt;
=== Exodus ===&lt;br /&gt;
&lt;br /&gt;
The rest of the installation is almost identical to [[Log_of_an_installation_of_libexodus_on_Centos_5.3]]&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=551</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=551"/>
		<updated>2009-07-11T14:15:27Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Setting up Postgres for Exodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.32 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate fmgr.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate fmgr.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
here are some old manual  [[pgexodus handbuilding instructions]]&lt;br /&gt;
&lt;br /&gt;
check you have access to the pg_config program&lt;br /&gt;
&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
if not, do something like the following, depending on where your Postgres is installed.&lt;br /&gt;
&lt;br /&gt;
 PATH=/Library/PostgreSQL/8.3/bin/:$PATH&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
Do the classic configure, make, make install procedure&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/exodus/pgexodus&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly (count them)&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                                  List of functions&lt;br /&gt;
 Schema |          Name           |      Result data type       |                 Argument data types&lt;br /&gt;
--------+-------------------------+-----------------------------+-----------------------------------------------------&lt;br /&gt;
 public | exodus_call             | bytea                       | bytea, bytea, bytea, bytea, bytea, integer, integer&lt;br /&gt;
 public | exodus_extract_bytea    | bytea                       | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_date     | date                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_datetime | timestamp without time zone | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_sort     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text2    | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_time     | time without time zone      | bytea, integer, integer, integer&lt;br /&gt;
(8 rows)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
&lt;br /&gt;
For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano ~/data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines. NB DONT comment out any other similar lines esp. ones containining &amp;quot;postgres&amp;quot;&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
for redhat/centos&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Centos_5.3&amp;diff=550</id>
		<title>Log of an installation of libexodus on Centos 5.3</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Centos_5.3&amp;diff=550"/>
		<updated>2009-07-11T14:09:47Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Preparation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Preparation ===&lt;br /&gt;
&lt;br /&gt;
 sudo su -&lt;br /&gt;
 yum update&lt;br /&gt;
 yum install boost-devel postgresql-devel gcc-c++ subversion postgresql-server&lt;br /&gt;
 service postgresql start&lt;br /&gt;
&lt;br /&gt;
=== Exodus ===&lt;br /&gt;
&lt;br /&gt;
(pgexodus, which allows &amp;quot;sort/select/index by&amp;quot;, isnt included in this quick install)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/include /usr/include/postgresql&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
... and add the following line  (nb with no preceding word include)&lt;br /&gt;
&lt;br /&gt;
 /usr/local/lib&lt;br /&gt;
&lt;br /&gt;
register the new libraries&lt;br /&gt;
&lt;br /&gt;
 /sbin/ldconfig&lt;br /&gt;
&lt;br /&gt;
make a pointer to the include files&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
	print(oconv(date(),&amp;quot;D&amp;quot;));&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
 27 JUN 2009&lt;br /&gt;
 27 JUN 2009&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Centos_5.3&amp;diff=549</id>
		<title>Log of an installation of libexodus on Centos 5.3</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Centos_5.3&amp;diff=549"/>
		<updated>2009-07-11T14:08:46Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Preparation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Preparation ===&lt;br /&gt;
&lt;br /&gt;
 sudo su -&lt;br /&gt;
 yum update&lt;br /&gt;
 yum install boost-devel postgresql-devel gcc-c++ subversion postgresql-server&lt;br /&gt;
&lt;br /&gt;
=== Exodus ===&lt;br /&gt;
&lt;br /&gt;
(pgexodus, which allows &amp;quot;sort/select/index by&amp;quot;, isnt included in this quick install)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/include /usr/include/postgresql&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
... and add the following line  (nb with no preceding word include)&lt;br /&gt;
&lt;br /&gt;
 /usr/local/lib&lt;br /&gt;
&lt;br /&gt;
register the new libraries&lt;br /&gt;
&lt;br /&gt;
 /sbin/ldconfig&lt;br /&gt;
&lt;br /&gt;
make a pointer to the include files&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
	print(oconv(date(),&amp;quot;D&amp;quot;));&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
&lt;br /&gt;
 ./a.out&lt;br /&gt;
&lt;br /&gt;
 27 JUN 2009&lt;br /&gt;
 27 JUN 2009&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=548</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=548"/>
		<updated>2009-07-11T11:04:59Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Building and Installing libexodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.32 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate fmgr.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate fmgr.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
here are some old manual  [[pgexodus handbuilding instructions]]&lt;br /&gt;
&lt;br /&gt;
check you have access to the pg_config program&lt;br /&gt;
&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
if not, do something like the following, depending on where your Postgres is installed.&lt;br /&gt;
&lt;br /&gt;
 PATH=/Library/PostgreSQL/8.3/bin/:$PATH&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
Do the classic configure, make, make install procedure&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/exodus/pgexodus&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly (count them)&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                                  List of functions&lt;br /&gt;
 Schema |          Name           |      Result data type       |                 Argument data types&lt;br /&gt;
--------+-------------------------+-----------------------------+-----------------------------------------------------&lt;br /&gt;
 public | exodus_call             | bytea                       | bytea, bytea, bytea, bytea, bytea, integer, integer&lt;br /&gt;
 public | exodus_extract_bytea    | bytea                       | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_date     | date                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_datetime | timestamp without time zone | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_sort     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text2    | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_time     | time without time zone      | bytea, integer, integer, integer&lt;br /&gt;
(8 rows)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
&lt;br /&gt;
For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines. NB DONT comment out any other similar lines esp. ones containining &amp;quot;postgres&amp;quot;&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
for redhat/centos&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Ubuntu_9.04_Jaunty_Jackalope&amp;diff=547</id>
		<title>Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Ubuntu_9.04_Jaunty_Jackalope&amp;diff=547"/>
		<updated>2009-07-11T10:41:34Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Preparation ===&lt;br /&gt;
&lt;br /&gt;
 sudo su -&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
 apt-get install postgresql libpq-dev libboost-dev build-essential subversion&lt;br /&gt;
&lt;br /&gt;
=== Exodus ===&lt;br /&gt;
&lt;br /&gt;
(pgexodus (which allows &amp;quot;sort/select/index by&amp;quot;) isnt included in this quick install)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
	println(oconv(date(),&amp;quot;D&amp;quot;));&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus -I/usr/local/include/exodus&lt;br /&gt;
&lt;br /&gt;
 /a.out&lt;br /&gt;
&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
 25 JUN 2009&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Building_on_Mac&amp;diff=546</id>
		<title>Building on Mac</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Building_on_Mac&amp;diff=546"/>
		<updated>2009-07-11T09:19:11Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Building and Installing libexodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Installing Exodus on Mac is almost identical to installing on Linux but it is a little harder to acquire and configure the dependencies.&lt;br /&gt;
&lt;br /&gt;
This install was performed on OSX 10.5.5 (Leopard)&lt;br /&gt;
&lt;br /&gt;
=== Installing dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing C++ compiler ====&lt;br /&gt;
&lt;br /&gt;
Older macs might need to install XCODE tools from http://developer.apple.com after free registration. This is unfortunately a large 1Gb download.&lt;br /&gt;
&lt;br /&gt;
Newer macs have XCODE tools installer in the Applications or Library folder and you just have to install it.&lt;br /&gt;
&lt;br /&gt;
The XCODE package includes subversion&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
http://www.postgresql.org/download/macosx&lt;br /&gt;
&lt;br /&gt;
http://www.enterprisedb.com/products/pgdownload.do#osx&lt;br /&gt;
&lt;br /&gt;
http://www.enterprisedb.com/getfile.jsp?fileid=484&lt;br /&gt;
&lt;br /&gt;
Once downloaded, just do a standard install and remember the admin user password.&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_33. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex. How to do this on Mac OSX is unknown at the moment.&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
In safari get http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2 and move it to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open a classic console shell (terminal)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,regex,thread&lt;br /&gt;
&lt;br /&gt;
Optionally, speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 sudo ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
=== Building and Installing libexodus ===&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (using curl since wget isnt default installed on mac osx) - may not be the latest version&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 curl http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&amp;gt;Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Ensure postgres can be found (change 8.3 to your version) and check pg_config can run&lt;br /&gt;
&lt;br /&gt;
 PATH=/Library/PostgreSQL/8.3/bin/:$PATH&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
Find out where your boost libraries are installed and what they are named.&lt;br /&gt;
&lt;br /&gt;
 find /usr | grep libboost&lt;br /&gt;
&lt;br /&gt;
Customise the following command to suit the boost library location and names that you found in the previous step. There might be a configure.mac file to modify/use.&lt;br /&gt;
&lt;br /&gt;
 ./configure --with-boost-libdir=/usr/local/lib \&lt;br /&gt;
 --with-boost-date-time=boost_date_time-xgcc40-mt \&lt;br /&gt;
 --with-boost-filesystem=boost_filesystem-xgcc40-mt \&lt;br /&gt;
 --with-boost-regex=boost_regex-xgcc40-mt \&lt;br /&gt;
 --with-boost-thread=boost_thread-xgcc40-mt&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
An additional installation step that unfortunately has to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 sudo ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can now develop in C++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
#Finder, Places, Applications, PostgreSQL 8.3, PGAdmin III&lt;br /&gt;
#Login as superuser eg postgres&lt;br /&gt;
#Select the postgres database&lt;br /&gt;
#Click SQL in the toolbar and enter the following sql command.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
 PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
 CREATEDB CREATEROLE;&lt;br /&gt;
&lt;br /&gt;
and click the Execute Query button. It should show &amp;quot;Query returned successfully&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
 WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
 OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
and click the Execute Query button. It should show &amp;quot;Query returned successfully&amp;quot;&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Building_on_Mac&amp;diff=545</id>
		<title>Building on Mac</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Building_on_Mac&amp;diff=545"/>
		<updated>2009-07-11T09:15:23Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Building and Installing libexodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Installing Exodus on Mac is almost identical to installing on Linux but it is a little harder to acquire and configure the dependencies.&lt;br /&gt;
&lt;br /&gt;
This install was performed on OSX 10.5.5 (Leopard)&lt;br /&gt;
&lt;br /&gt;
=== Installing dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing C++ compiler ====&lt;br /&gt;
&lt;br /&gt;
Older macs might need to install XCODE tools from http://developer.apple.com after free registration. This is unfortunately a large 1Gb download.&lt;br /&gt;
&lt;br /&gt;
Newer macs have XCODE tools installer in the Applications or Library folder and you just have to install it.&lt;br /&gt;
&lt;br /&gt;
The XCODE package includes subversion&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
http://www.postgresql.org/download/macosx&lt;br /&gt;
&lt;br /&gt;
http://www.enterprisedb.com/products/pgdownload.do#osx&lt;br /&gt;
&lt;br /&gt;
http://www.enterprisedb.com/getfile.jsp?fileid=484&lt;br /&gt;
&lt;br /&gt;
Once downloaded, just do a standard install and remember the admin user password.&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_33. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex. How to do this on Mac OSX is unknown at the moment.&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
In safari get http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2 and move it to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open a classic console shell (terminal)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,regex,thread&lt;br /&gt;
&lt;br /&gt;
Optionally, speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 sudo ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
=== Building and Installing libexodus ===&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (using curl not wget) - may not be the latest version&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 curl http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&amp;gt;Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Ensure postgres can be found (change 8.3 to your version) and check pg_config can run&lt;br /&gt;
&lt;br /&gt;
 PATH=/Library/PostgreSQL/8.3/bin/:$PATH&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
Find out where your boost libraries are installed and what they are named.&lt;br /&gt;
&lt;br /&gt;
 find /usr | grep libboost&lt;br /&gt;
&lt;br /&gt;
Customise the following command to suit the boost library location and names that you found in the previous step. There might be a configure.mac file to modify/use.&lt;br /&gt;
&lt;br /&gt;
 ./configure --with-boost-libdir=/usr/local/lib \&lt;br /&gt;
 --with-boost-date-time=boost_date_time-xgcc40-mt \&lt;br /&gt;
 --with-boost-filesystem=boost_filesystem-xgcc40-mt \&lt;br /&gt;
 --with-boost-regex=boost_regex-xgcc40-mt \&lt;br /&gt;
 --with-boost-thread=boost_thread-xgcc40-mt&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
An additional installation step that unfortunately has to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 sudo ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can now develop in C++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
#Finder, Places, Applications, PostgreSQL 8.3, PGAdmin III&lt;br /&gt;
#Login as superuser eg postgres&lt;br /&gt;
#Select the postgres database&lt;br /&gt;
#Click SQL in the toolbar and enter the following sql command.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
 PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
 CREATEDB CREATEROLE;&lt;br /&gt;
&lt;br /&gt;
and click the Execute Query button. It should show &amp;quot;Query returned successfully&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
 WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
 OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
and click the Execute Query button. It should show &amp;quot;Query returned successfully&amp;quot;&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Ubuntu_8.04.1_LTS&amp;diff=544</id>
		<title>Log of an installation of libexodus on Ubuntu 8.04.1 LTS</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Ubuntu_8.04.1_LTS&amp;diff=544"/>
		<updated>2009-07-11T09:14:08Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Preparation ===&lt;br /&gt;
&lt;br /&gt;
 sudo su -&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
 apt-get install postgresql postgresql-server-dev* libpq-dev libboost-dev libboost-date-time-dev libboost-filesystem-dev libboost-regex-dev libboost-thread-dev build-essential subversion&lt;br /&gt;
&lt;br /&gt;
=== Exodus ===&lt;br /&gt;
&lt;br /&gt;
(pgexodus (which allows &amp;quot;sort/select/index by&amp;quot;) isnt included in this quick install)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
	println(oconv(date(),&amp;quot;D&amp;quot;));&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus -I/usr/local/include/exodus&lt;br /&gt;
&lt;br /&gt;
 /a.out&lt;br /&gt;
&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
 25 JUN 2009&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=543</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=543"/>
		<updated>2009-07-11T08:42:48Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.35 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate fmgr.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate fmgr.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
here are some old manual  [[pgexodus handbuilding instructions]]&lt;br /&gt;
&lt;br /&gt;
check you have access to the pg_config program&lt;br /&gt;
&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
if not, do something like the following, depending on where your Postgres is installed.&lt;br /&gt;
&lt;br /&gt;
 PATH=/Library/PostgreSQL/8.3/bin/:$PATH&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
Do the classic configure, make, make install procedure&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/exodus/pgexodus&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly (count them)&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                                  List of functions&lt;br /&gt;
 Schema |          Name           |      Result data type       |                 Argument data types&lt;br /&gt;
--------+-------------------------+-----------------------------+-----------------------------------------------------&lt;br /&gt;
 public | exodus_call             | bytea                       | bytea, bytea, bytea, bytea, bytea, integer, integer&lt;br /&gt;
 public | exodus_extract_bytea    | bytea                       | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_date     | date                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_datetime | timestamp without time zone | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_sort     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text2    | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_time     | time without time zone      | bytea, integer, integer, integer&lt;br /&gt;
(8 rows)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
&lt;br /&gt;
For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines. NB DONT comment out any other similar lines esp. ones containining &amp;quot;postgres&amp;quot;&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
for redhat/centos&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=542</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=542"/>
		<updated>2009-07-10T14:21:40Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Installing pgexodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.35 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate fmgr.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate fmgr.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
here are some old manual  [[pgexodus handbuilding instructions]]&lt;br /&gt;
&lt;br /&gt;
check you have access to the pg_config program&lt;br /&gt;
&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
if not, do something like the following, depending on where your Postgres is installed.&lt;br /&gt;
&lt;br /&gt;
 PATH=/Library/PostgreSQL/8.3/bin/:$PATH&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
Do the classic configure, make, make install procedure&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/exodus/pgexodus&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly (count them)&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                                  List of functions&lt;br /&gt;
 Schema |          Name           |      Result data type       |                 Argument data types&lt;br /&gt;
--------+-------------------------+-----------------------------+-----------------------------------------------------&lt;br /&gt;
 public | exodus_call             | bytea                       | bytea, bytea, bytea, bytea, bytea, integer, integer&lt;br /&gt;
 public | exodus_extract_bytea    | bytea                       | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_date     | date                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_datetime | timestamp without time zone | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_sort     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text2    | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_time     | time without time zone      | bytea, integer, integer, integer&lt;br /&gt;
(8 rows)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
&lt;br /&gt;
For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines. NB DONT comment out any other similar lines esp. ones containining &amp;quot;postgres&amp;quot;&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
for redhat/centos&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=541</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=541"/>
		<updated>2009-07-10T12:44:20Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Building pgexodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.35 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate fmgr.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate fmgr.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
here are some old manual  [[pgexodus handbuilding instructions]]&lt;br /&gt;
&lt;br /&gt;
check you have access to the pg_config program&lt;br /&gt;
&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
if not, do something like the following, depending on where your Postgres is installed.&lt;br /&gt;
&lt;br /&gt;
 PATH=/Library/PostgreSQL/8.3/bin/:$PATH&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
Do the classic configure, make, make install procedure&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/exodus/pgexodus&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                                  List of functions&lt;br /&gt;
 Schema |          Name           |      Result data type       |                 Argument data types&lt;br /&gt;
--------+-------------------------+-----------------------------+-----------------------------------------------------&lt;br /&gt;
 public | exodus_call             | bytea                       | bytea, bytea, bytea, bytea, bytea, integer, integer&lt;br /&gt;
 public | exodus_extract_bytea    | bytea                       | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_date     | date                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_datetime | timestamp without time zone | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_sort     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text2    | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_time     | time without time zone      | bytea, integer, integer, integer&lt;br /&gt;
(8 rows)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
&lt;br /&gt;
For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines. NB DONT comment out any other similar lines esp. ones containining &amp;quot;postgres&amp;quot;&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
for redhat/centos&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=540</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=540"/>
		<updated>2009-07-10T12:40:56Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Building pgexodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.35 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate fmgr.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate fmgr.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
here are some old manual  [[pgexodus handbuilding instructions]]&lt;br /&gt;
&lt;br /&gt;
ensure you have access to the pg_config program or type a path to it&lt;br /&gt;
&lt;br /&gt;
export PATH=/usr/local/postgresl:$PATH&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/exodus/pgexodus&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                                  List of functions&lt;br /&gt;
 Schema |          Name           |      Result data type       |                 Argument data types&lt;br /&gt;
--------+-------------------------+-----------------------------+-----------------------------------------------------&lt;br /&gt;
 public | exodus_call             | bytea                       | bytea, bytea, bytea, bytea, bytea, integer, integer&lt;br /&gt;
 public | exodus_extract_bytea    | bytea                       | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_date     | date                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_datetime | timestamp without time zone | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_sort     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text2    | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_time     | time without time zone      | bytea, integer, integer, integer&lt;br /&gt;
(8 rows)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
&lt;br /&gt;
For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines. NB DONT comment out any other similar lines esp. ones containining &amp;quot;postgres&amp;quot;&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
for redhat/centos&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=539</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=539"/>
		<updated>2009-07-10T12:35:53Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Installing Postgres */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.35 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate fmgr.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate fmgr.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
here are some old manual  [[pgexodus handbuilding instructions]]&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                                  List of functions&lt;br /&gt;
 Schema |          Name           |      Result data type       |                 Argument data types&lt;br /&gt;
--------+-------------------------+-----------------------------+-----------------------------------------------------&lt;br /&gt;
 public | exodus_call             | bytea                       | bytea, bytea, bytea, bytea, bytea, integer, integer&lt;br /&gt;
 public | exodus_extract_bytea    | bytea                       | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_date     | date                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_datetime | timestamp without time zone | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_sort     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text2    | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_time     | time without time zone      | bytea, integer, integer, integer&lt;br /&gt;
(8 rows)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
&lt;br /&gt;
For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines. NB DONT comment out any other similar lines esp. ones containining &amp;quot;postgres&amp;quot;&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
for redhat/centos&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=538</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=538"/>
		<updated>2009-07-10T12:35:01Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Installing Postgres */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.35 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate fmgr.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
here are some old manual  [[pgexodus handbuilding instructions]]&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                                  List of functions&lt;br /&gt;
 Schema |          Name           |      Result data type       |                 Argument data types&lt;br /&gt;
--------+-------------------------+-----------------------------+-----------------------------------------------------&lt;br /&gt;
 public | exodus_call             | bytea                       | bytea, bytea, bytea, bytea, bytea, integer, integer&lt;br /&gt;
 public | exodus_extract_bytea    | bytea                       | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_date     | date                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_datetime | timestamp without time zone | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_sort     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text2    | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_time     | time without time zone      | bytea, integer, integer, integer&lt;br /&gt;
(8 rows)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
&lt;br /&gt;
For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines. NB DONT comment out any other similar lines esp. ones containining &amp;quot;postgres&amp;quot;&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
for redhat/centos&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Pgexodus_handbuilding_instructions&amp;diff=537</id>
		<title>Pgexodus handbuilding instructions</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Pgexodus_handbuilding_instructions&amp;diff=537"/>
		<updated>2009-07-10T12:34:02Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note that all routines are marked for &amp;quot;C linkage&amp;quot; in order to work with the postgres library &amp;quot;pq&amp;quot;. For convenience they are all compiled under C++ since callexodus requires boost which is c++. The .c routines could equally well be compiled with the plain c compiler. The link stage must be done in c++ style in order to link to the c++ runtime library &amp;quot;rt&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/exodus/pgexodus/src&lt;br /&gt;
&lt;br /&gt;
 g++ -fpic -c *.c *.cpp -I`pg_config --includedir` -I`pg_config --includedir-server`&lt;br /&gt;
 g++ -shared -o pgexodus.so *.o -lrt -lpq&lt;br /&gt;
&lt;br /&gt;
Check the build as follows:&lt;br /&gt;
&lt;br /&gt;
 ld pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like the following. These 8 references to the postgres library all seem to be resolved at runtime.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgexodus.so: undefined reference to `Float8GetDatum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_atoi&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `CurrentMemoryContext&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_detoast_datum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pfree&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_start&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `MemoryContextAlloc&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_finish&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also check the following&lt;br /&gt;
&lt;br /&gt;
 ldd -u pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./pgexodus.so: error: symbol lookup error: undefined symbol: CurrentMemoryContext (continued)&lt;br /&gt;
undefined symbol: CurrentMemoryContext  (./pgexodus.so)&lt;br /&gt;
Unused direct dependencies:&lt;br /&gt;
&lt;br /&gt;
        /lib/librt.so.1&lt;br /&gt;
        /usr/lib/libpq.so.5&lt;br /&gt;
        /lib/libm.so.6&lt;br /&gt;
        /lib/libgcc_s.so.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy the library to the postgres library folder&lt;br /&gt;
&lt;br /&gt;
 sudo cp pgexodus.so `pg_config --pkglibdir`&lt;br /&gt;
&lt;br /&gt;
and restart postgres if this isnt the first time you are installing pgexodus&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=536</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=536"/>
		<updated>2009-07-10T12:33:26Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Installing pgexodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.35 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
here are some old manual  [[pgexodus handbuilding instructions]]&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                                  List of functions&lt;br /&gt;
 Schema |          Name           |      Result data type       |                 Argument data types&lt;br /&gt;
--------+-------------------------+-----------------------------+-----------------------------------------------------&lt;br /&gt;
 public | exodus_call             | bytea                       | bytea, bytea, bytea, bytea, bytea, integer, integer&lt;br /&gt;
 public | exodus_extract_bytea    | bytea                       | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_date     | date                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_datetime | timestamp without time zone | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_sort     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text2    | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_time     | time without time zone      | bytea, integer, integer, integer&lt;br /&gt;
(8 rows)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
&lt;br /&gt;
For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines. NB DONT comment out any other similar lines esp. ones containining &amp;quot;postgres&amp;quot;&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
for redhat/centos&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Pgexodus_handbuilding_instructions&amp;diff=535</id>
		<title>Pgexodus handbuilding instructions</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Pgexodus_handbuilding_instructions&amp;diff=535"/>
		<updated>2009-07-10T12:32:54Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: New page:  Note that all routines are marked for &amp;quot;C linkage&amp;quot; in order to work with the postgres library &amp;quot;pq&amp;quot;. For convenience they are all compiled under C++ since callexodus requires boost which is...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Note that all routines are marked for &amp;quot;C linkage&amp;quot; in order to work with the postgres library &amp;quot;pq&amp;quot;. For convenience they are all compiled under C++ since callexodus requires boost which is c++. The .c routines could equally well be compiled with the plain c compiler. The link stage must be done in c++ style in order to link to the c++ runtime library &amp;quot;rt&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/exodus/pgexodus/src&lt;br /&gt;
&lt;br /&gt;
 g++ -fpic -c *.c *.cpp -I`pg_config --includedir` -I`pg_config --includedir-server`&lt;br /&gt;
 g++ -shared -o pgexodus.so *.o -lrt -lpq&lt;br /&gt;
&lt;br /&gt;
Check the build as follows:&lt;br /&gt;
&lt;br /&gt;
 ld pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like the following. These 8 references to the postgres library all seem to be resolved at runtime.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgexodus.so: undefined reference to `Float8GetDatum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_atoi&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `CurrentMemoryContext&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_detoast_datum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pfree&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_start&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `MemoryContextAlloc&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_finish&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also check the following&lt;br /&gt;
&lt;br /&gt;
 ldd -u pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./pgexodus.so: error: symbol lookup error: undefined symbol: CurrentMemoryContext (continued)&lt;br /&gt;
undefined symbol: CurrentMemoryContext  (./pgexodus.so)&lt;br /&gt;
Unused direct dependencies:&lt;br /&gt;
&lt;br /&gt;
        /lib/librt.so.1&lt;br /&gt;
        /usr/lib/libpq.so.5&lt;br /&gt;
        /lib/libm.so.6&lt;br /&gt;
        /lib/libgcc_s.so.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=534</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=534"/>
		<updated>2009-07-10T12:32:16Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Building pgexodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.35 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
here are some old manual  [[pgexodus handbuilding instructions]]&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Copy the library to the postgres library folder&lt;br /&gt;
&lt;br /&gt;
 sudo cp pgexodus.so `pg_config --pkglibdir`&lt;br /&gt;
&lt;br /&gt;
and restart postgres if this isnt the first time you are installing pgexodus&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                                  List of functions&lt;br /&gt;
 Schema |          Name           |      Result data type       |                 Argument data types&lt;br /&gt;
--------+-------------------------+-----------------------------+-----------------------------------------------------&lt;br /&gt;
 public | exodus_call             | bytea                       | bytea, bytea, bytea, bytea, bytea, integer, integer&lt;br /&gt;
 public | exodus_extract_bytea    | bytea                       | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_date     | date                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_datetime | timestamp without time zone | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_sort     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text2    | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_time     | time without time zone      | bytea, integer, integer, integer&lt;br /&gt;
(8 rows)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
&lt;br /&gt;
For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines. NB DONT comment out any other similar lines esp. ones containining &amp;quot;postgres&amp;quot;&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
for redhat/centos&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Building_on_Mac&amp;diff=533</id>
		<title>Building on Mac</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Building_on_Mac&amp;diff=533"/>
		<updated>2009-07-08T22:25:00Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Building and Installing libexodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Installing Exodus on Mac is almost identical to installing on Linux but it is a little harder to acquire and configure the dependencies.&lt;br /&gt;
&lt;br /&gt;
This install was performed on OSX 10.5.5 (Leopard)&lt;br /&gt;
&lt;br /&gt;
=== Installing dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing C++ compiler ====&lt;br /&gt;
&lt;br /&gt;
Older macs might need to install XCODE tools from http://developer.apple.com after free registration. This is unfortunately a large 1Gb download.&lt;br /&gt;
&lt;br /&gt;
Newer macs have XCODE tools installer in the Applications or Library folder and you just have to install it.&lt;br /&gt;
&lt;br /&gt;
The XCODE package includes subversion&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
http://www.postgresql.org/download/macosx&lt;br /&gt;
&lt;br /&gt;
http://www.enterprisedb.com/products/pgdownload.do#osx&lt;br /&gt;
&lt;br /&gt;
http://www.enterprisedb.com/getfile.jsp?fileid=484&lt;br /&gt;
&lt;br /&gt;
Once downloaded, just do a standard install and remember the admin user password.&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_33. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex. How to do this on Mac OSX is unknown at the moment.&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
In safari get http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2 and move it to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open a classic console shell (terminal)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,regex,thread&lt;br /&gt;
&lt;br /&gt;
Optionally, speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 sudo ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
=== Building and Installing libexodus ===&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (using curl not wget) - may not be the latest version&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 curl http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&amp;gt;Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Ensure postgres can be found (change 8.3 to your version) and check pg_config can run&lt;br /&gt;
&lt;br /&gt;
 PATH=/Library/PostgreSQL/8.3/bin/:$PATH&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
Find out where your boost libraries are installed and what they are named.&lt;br /&gt;
&lt;br /&gt;
 find /usr | grep libboost&lt;br /&gt;
&lt;br /&gt;
Customise the following command to suit the boost library location and names that you found in the previous step. There might be a configure.mac file to modify/use.&lt;br /&gt;
&lt;br /&gt;
 ./configure --with-boost-libdir=/usr/local/lib \&lt;br /&gt;
 --with-boost-date-time=boost_date_time-xgcc40-mt \&lt;br /&gt;
 --with-boost-filesystem=boost_filesystem-xgcc40-mt \&lt;br /&gt;
 --with-boost-regex=boost_regex-xgcc40-mt \&lt;br /&gt;
 --with-boost-thread=boost_thread-xgcc40-mt&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
An additional installation step that unfortunately has to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 sudo ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can now develop in C++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
#Finder, Places, Applications, PostgreSQL 8.3, PGAdmin III&lt;br /&gt;
#Login as superuser eg postgres&lt;br /&gt;
#Select the postgres database&lt;br /&gt;
#Click SQL in the toolbar and enter the following sql command.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
 PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
 CREATEDB CREATEROLE;&lt;br /&gt;
&lt;br /&gt;
and click the Execute Query button. It should show &amp;quot;Query returned successfully&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
 WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
 OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
and click the Execute Query button. It should show &amp;quot;Query returned successfully&amp;quot;&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Building_on_Mac&amp;diff=532</id>
		<title>Building on Mac</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Building_on_Mac&amp;diff=532"/>
		<updated>2009-07-08T21:10:59Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Building and Installing libexodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Installing Exodus on Mac is almost identical to installing on Linux but it is a little harder to acquire and configure the dependencies.&lt;br /&gt;
&lt;br /&gt;
This install was performed on OSX 10.5.5 (Leopard)&lt;br /&gt;
&lt;br /&gt;
=== Installing dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing C++ compiler ====&lt;br /&gt;
&lt;br /&gt;
Older macs might need to install XCODE tools from http://developer.apple.com after free registration. This is unfortunately a large 1Gb download.&lt;br /&gt;
&lt;br /&gt;
Newer macs have XCODE tools installer in the Applications or Library folder and you just have to install it.&lt;br /&gt;
&lt;br /&gt;
The XCODE package includes subversion&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
http://www.postgresql.org/download/macosx&lt;br /&gt;
&lt;br /&gt;
http://www.enterprisedb.com/products/pgdownload.do#osx&lt;br /&gt;
&lt;br /&gt;
http://www.enterprisedb.com/getfile.jsp?fileid=484&lt;br /&gt;
&lt;br /&gt;
Once downloaded, just do a standard install and remember the admin user password.&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_33. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex. How to do this on Mac OSX is unknown at the moment.&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
In safari get http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2 and move it to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open a classic console shell (terminal)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,regex,thread&lt;br /&gt;
&lt;br /&gt;
Optionally, speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 sudo ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
=== Building and Installing libexodus ===&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (using curl not wget) - may not be the latest version&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 curl http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&amp;gt;Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Ensure postgres can be found (change 8.3 to your version) and check pg_config can run&lt;br /&gt;
&lt;br /&gt;
 PATH=/Library/PostgreSQL/8.3/bin/:$PATH&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
Find out where your boost libraries are installed and what they are named.&lt;br /&gt;
&lt;br /&gt;
 find /usr | grep libboost&lt;br /&gt;
&lt;br /&gt;
Customise the following command to suit the boost library location and names that you found in the previous step. There might be a configure.mac file to modify/use.&lt;br /&gt;
&lt;br /&gt;
 ./configure --with-boost-libdir=/usr/local/lib \&lt;br /&gt;
 --with-boost-date-time=boost_date_time-xgcc40-mt \&lt;br /&gt;
 --with-boost-filesystem=boost_filesystem-xgcc40-mt \&lt;br /&gt;
 --with-boost-regex=boost_regex-xgcc40-mt \&lt;br /&gt;
 --with-boost-thread=boost_thread-xgcc40-mt&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
An additional installation step that unfortunately has to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can now develop in C++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
#Finder, Places, Applications, PostgreSQL 8.3, PGAdmin III&lt;br /&gt;
#Login as superuser eg postgres&lt;br /&gt;
#Select the postgres database&lt;br /&gt;
#Click SQL in the toolbar and enter the following sql command.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
 PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
 CREATEDB CREATEROLE;&lt;br /&gt;
&lt;br /&gt;
and click the Execute Query button. It should show &amp;quot;Query returned successfully&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
 WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
 OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
and click the Execute Query button. It should show &amp;quot;Query returned successfully&amp;quot;&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Building_on_Mac&amp;diff=528</id>
		<title>Building on Mac</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Building_on_Mac&amp;diff=528"/>
		<updated>2009-07-08T18:44:49Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Installing Boost */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Installing Exodus on Mac is almost identical to installing on Linux but it is a little harder to acquire and configure the dependencies.&lt;br /&gt;
&lt;br /&gt;
This install was performed on OSX 10.5.5 (Leopard)&lt;br /&gt;
&lt;br /&gt;
=== Installing dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing C++ compiler ====&lt;br /&gt;
&lt;br /&gt;
Older macs might need to install XCODE tools from http://developer.apple.com after free registration. This is unfortunately a large 1Gb download.&lt;br /&gt;
&lt;br /&gt;
Newer macs have XCODE tools installer in the Applications or Library folder and you just have to install it.&lt;br /&gt;
&lt;br /&gt;
The XCODE package includes subversion&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
http://www.postgresql.org/download/macosx&lt;br /&gt;
&lt;br /&gt;
http://www.enterprisedb.com/products/pgdownload.do#osx&lt;br /&gt;
&lt;br /&gt;
http://www.enterprisedb.com/getfile.jsp?fileid=484&lt;br /&gt;
&lt;br /&gt;
Once downloaded, just do a standard install and remember the admin user password.&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_33. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex. How to do this on Mac OSX is unknown at the moment.&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
In safari get http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2 and move it to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open a classic console shell (terminal)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 sudo su -&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
=== Building and Installing libexodus ===&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (using curl not wget) - may not be the latest version&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 curl http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&amp;gt;Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Ensure postgres can be found (change 8.3 to your version) and check pg_config can run&lt;br /&gt;
&lt;br /&gt;
 PATH=/Library/PostgreSQL/8.3/bin/:$PATH&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
Find out where your boost libraries are installed and what they are named.&lt;br /&gt;
&lt;br /&gt;
 find /usr | grep libboost&lt;br /&gt;
&lt;br /&gt;
Customise the following command to suit the boost library location and names that you found in the previous step.&lt;br /&gt;
&lt;br /&gt;
 ./configure --with-boost-libdir=/usr/local/lib \&lt;br /&gt;
 --with-boost-date-time=boost_date_time-xgcc40-mt \&lt;br /&gt;
 --with-boost-filesystem=boost_filesystem-xgcc40-mt \&lt;br /&gt;
 --with-boost-regex=boost_regex-xgcc40-mt \&lt;br /&gt;
 --with-boost-system=boost_system-xgcc40-mt \&lt;br /&gt;
 --with-boost-thread=boost_thread-xgcc40-mt&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
An additional installation step that unfortunately has to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can now develop in C++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
#Finder, Places, Applications, PostgreSQL 8.3, PGAdmin III&lt;br /&gt;
#Login as superuser eg postgres&lt;br /&gt;
#Select the postgres database&lt;br /&gt;
#Click SQL in the toolbar and enter the following sql command.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
 PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
 CREATEDB CREATEROLE;&lt;br /&gt;
&lt;br /&gt;
and click the Execute Query button. It should show &amp;quot;Query returned successfully&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
 WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
 OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
and click the Execute Query button. It should show &amp;quot;Query returned successfully&amp;quot;&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Building_on_Mac&amp;diff=527</id>
		<title>Building on Mac</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Building_on_Mac&amp;diff=527"/>
		<updated>2009-07-08T18:03:43Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Installing Boost */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Installing Exodus on Mac is almost identical to installing on Linux but it is a little harder to acquire and configure the dependencies.&lt;br /&gt;
&lt;br /&gt;
This install was performed on OSX 10.5.5 (Leopard)&lt;br /&gt;
&lt;br /&gt;
=== Installing dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing C++ compiler ====&lt;br /&gt;
&lt;br /&gt;
Older macs might need to install XCODE tools from http://developer.apple.com after free registration. This is unfortunately a large 1Gb download.&lt;br /&gt;
&lt;br /&gt;
Newer macs have XCODE tools installer in the Applications or Library folder and you just have to install it.&lt;br /&gt;
&lt;br /&gt;
The XCODE package includes subversion&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
http://www.postgresql.org/download/macosx&lt;br /&gt;
&lt;br /&gt;
http://www.enterprisedb.com/products/pgdownload.do#osx&lt;br /&gt;
&lt;br /&gt;
http://www.enterprisedb.com/getfile.jsp?fileid=484&lt;br /&gt;
&lt;br /&gt;
Once downloaded, just do a standard install and remember the admin user password.&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_33. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex. How to do this on Mac OSX is unknown at the moment.&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
In safari get http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2 and move it to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open a classic console shell (terminal)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 sudo su -&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
=== Building and Installing libexodus ===&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (using curl not wget) - may not be the latest version&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 curl http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&amp;gt;Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Ensure postgres can be found (change 8.3 to your version) and check pg_config can run&lt;br /&gt;
&lt;br /&gt;
 PATH=/Library/PostgreSQL/8.3/bin/:$PATH&lt;br /&gt;
 pg_config&lt;br /&gt;
&lt;br /&gt;
Find out where your boost libraries are installed and what they are named.&lt;br /&gt;
&lt;br /&gt;
 find /usr | grep libboost&lt;br /&gt;
&lt;br /&gt;
Customise the following command to suit the boost library location and names that you found in the previous step.&lt;br /&gt;
&lt;br /&gt;
 ./configure --with-boost-libdir=/usr/local/lib \&lt;br /&gt;
 --with-boost-date-time=boost_date_time-xgcc40-mt \&lt;br /&gt;
 --with-boost-filesystem=boost_filesystem-xgcc40-mt \&lt;br /&gt;
 --with-boost-regex=boost_regex-xgcc40-mt \&lt;br /&gt;
 --with-boost-system=boost_system-xgcc40-mt \&lt;br /&gt;
 --with-boost-thread=boost_thread-xgcc40-mt&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
An additional installation step that unfortunately has to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can now develop in C++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
#Finder, Places, Applications, PostgreSQL 8.3, PGAdmin III&lt;br /&gt;
#Login as superuser eg postgres&lt;br /&gt;
#Select the postgres database&lt;br /&gt;
#Click SQL in the toolbar and enter the following sql command.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
 PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
 CREATEDB CREATEROLE;&lt;br /&gt;
&lt;br /&gt;
and click the Execute Query button. It should show &amp;quot;Query returned successfully&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
 WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
 OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
and click the Execute Query button. It should show &amp;quot;Query returned successfully&amp;quot;&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=526</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=526"/>
		<updated>2009-07-08T13:37:52Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Installing pgexodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.35 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
Note that all routines are marked for &amp;quot;C linkage&amp;quot; in order to work with the postgres library &amp;quot;pq&amp;quot;. For convenience they are all compiled under C++ since callexodus requires boost which is c++. The .c routines could equally well be compiled with the plain c compiler. The link stage must be done in c++ style in order to link to the c++ runtime library &amp;quot;rt&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/exodus/pgexodus/src&lt;br /&gt;
&lt;br /&gt;
 g++ -fpic -c *.c *.cpp -I`pg_config --includedir` -I`pg_config --includedir-server`&lt;br /&gt;
 g++ -shared -o pgexodus.so *.o -lrt -lpq&lt;br /&gt;
&lt;br /&gt;
Check the build as follows:&lt;br /&gt;
&lt;br /&gt;
 ld pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like the following. These 8 references to the postgres library all seem to be resolved at runtime.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgexodus.so: undefined reference to `Float8GetDatum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_atoi&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `CurrentMemoryContext&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_detoast_datum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pfree&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_start&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `MemoryContextAlloc&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_finish&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also check the following&lt;br /&gt;
&lt;br /&gt;
 ldd -u pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./pgexodus.so: error: symbol lookup error: undefined symbol: CurrentMemoryContext (continued)&lt;br /&gt;
undefined symbol: CurrentMemoryContext  (./pgexodus.so)&lt;br /&gt;
Unused direct dependencies:&lt;br /&gt;
&lt;br /&gt;
        /lib/librt.so.1&lt;br /&gt;
        /usr/lib/libpq.so.5&lt;br /&gt;
        /lib/libm.so.6&lt;br /&gt;
        /lib/libgcc_s.so.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Copy the library to the postgres library folder&lt;br /&gt;
&lt;br /&gt;
 sudo cp pgexodus.so `pg_config --pkglibdir`&lt;br /&gt;
&lt;br /&gt;
and restart postgres if this isnt the first time you are installing pgexodus&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                                                  List of functions&lt;br /&gt;
 Schema |          Name           |      Result data type       |                 Argument data types&lt;br /&gt;
--------+-------------------------+-----------------------------+-----------------------------------------------------&lt;br /&gt;
 public | exodus_call             | bytea                       | bytea, bytea, bytea, bytea, bytea, integer, integer&lt;br /&gt;
 public | exodus_extract_bytea    | bytea                       | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_date     | date                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_datetime | timestamp without time zone | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_sort     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text     | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_text2    | text                        | bytea, integer, integer, integer&lt;br /&gt;
 public | exodus_extract_time     | time without time zone      | bytea, integer, integer, integer&lt;br /&gt;
(8 rows)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
&lt;br /&gt;
For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines. NB DONT comment out any other similar lines esp. ones containining &amp;quot;postgres&amp;quot;&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
for redhat/centos&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=525</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=525"/>
		<updated>2009-07-08T13:35:49Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Setting up Postgres for Exodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.35 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
Note that all routines are marked for &amp;quot;C linkage&amp;quot; in order to work with the postgres library &amp;quot;pq&amp;quot;. For convenience they are all compiled under C++ since callexodus requires boost which is c++. The .c routines could equally well be compiled with the plain c compiler. The link stage must be done in c++ style in order to link to the c++ runtime library &amp;quot;rt&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/exodus/pgexodus/src&lt;br /&gt;
&lt;br /&gt;
 g++ -fpic -c *.c *.cpp -I`pg_config --includedir` -I`pg_config --includedir-server`&lt;br /&gt;
 g++ -shared -o pgexodus.so *.o -lrt -lpq&lt;br /&gt;
&lt;br /&gt;
Check the build as follows:&lt;br /&gt;
&lt;br /&gt;
 ld pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like the following. These 8 references to the postgres library all seem to be resolved at runtime.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgexodus.so: undefined reference to `Float8GetDatum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_atoi&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `CurrentMemoryContext&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_detoast_datum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pfree&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_start&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `MemoryContextAlloc&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_finish&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also check the following&lt;br /&gt;
&lt;br /&gt;
 ldd -u pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./pgexodus.so: error: symbol lookup error: undefined symbol: CurrentMemoryContext (continued)&lt;br /&gt;
undefined symbol: CurrentMemoryContext  (./pgexodus.so)&lt;br /&gt;
Unused direct dependencies:&lt;br /&gt;
&lt;br /&gt;
        /lib/librt.so.1&lt;br /&gt;
        /usr/lib/libpq.so.5&lt;br /&gt;
        /lib/libm.so.6&lt;br /&gt;
        /lib/libgcc_s.so.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Copy the library to the postgres library folder&lt;br /&gt;
&lt;br /&gt;
 sudo cp pgexodus.so `pg_config --pkglibdir`&lt;br /&gt;
&lt;br /&gt;
and restart postgres if this isnt the first time you are installing pgexodus&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
&lt;br /&gt;
For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines. NB DONT comment out any other similar lines esp. ones containining &amp;quot;postgres&amp;quot;&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
for redhat/centos&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=524</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=524"/>
		<updated>2009-07-08T13:11:31Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Setting up Postgres for Exodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.35 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
Note that all routines are marked for &amp;quot;C linkage&amp;quot; in order to work with the postgres library &amp;quot;pq&amp;quot;. For convenience they are all compiled under C++ since callexodus requires boost which is c++. The .c routines could equally well be compiled with the plain c compiler. The link stage must be done in c++ style in order to link to the c++ runtime library &amp;quot;rt&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/exodus/pgexodus/src&lt;br /&gt;
&lt;br /&gt;
 g++ -fpic -c *.c *.cpp -I`pg_config --includedir` -I`pg_config --includedir-server`&lt;br /&gt;
 g++ -shared -o pgexodus.so *.o -lrt -lpq&lt;br /&gt;
&lt;br /&gt;
Check the build as follows:&lt;br /&gt;
&lt;br /&gt;
 ld pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like the following. These 8 references to the postgres library all seem to be resolved at runtime.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgexodus.so: undefined reference to `Float8GetDatum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_atoi&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `CurrentMemoryContext&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_detoast_datum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pfree&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_start&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `MemoryContextAlloc&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_finish&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also check the following&lt;br /&gt;
&lt;br /&gt;
 ldd -u pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./pgexodus.so: error: symbol lookup error: undefined symbol: CurrentMemoryContext (continued)&lt;br /&gt;
undefined symbol: CurrentMemoryContext  (./pgexodus.so)&lt;br /&gt;
Unused direct dependencies:&lt;br /&gt;
&lt;br /&gt;
        /lib/librt.so.1&lt;br /&gt;
        /usr/lib/libpq.so.5&lt;br /&gt;
        /lib/libm.so.6&lt;br /&gt;
        /lib/libgcc_s.so.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Copy the library to the postgres library folder&lt;br /&gt;
&lt;br /&gt;
 sudo cp pgexodus.so `pg_config --pkglibdir`&lt;br /&gt;
&lt;br /&gt;
and restart postgres if this isnt the first time you are installing pgexodus&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
&lt;br /&gt;
For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
for redhat/centos&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=523</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=523"/>
		<updated>2009-07-08T13:10:51Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Installing pgexodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.35 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
Note that all routines are marked for &amp;quot;C linkage&amp;quot; in order to work with the postgres library &amp;quot;pq&amp;quot;. For convenience they are all compiled under C++ since callexodus requires boost which is c++. The .c routines could equally well be compiled with the plain c compiler. The link stage must be done in c++ style in order to link to the c++ runtime library &amp;quot;rt&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/exodus/pgexodus/src&lt;br /&gt;
&lt;br /&gt;
 g++ -fpic -c *.c *.cpp -I`pg_config --includedir` -I`pg_config --includedir-server`&lt;br /&gt;
 g++ -shared -o pgexodus.so *.o -lrt -lpq&lt;br /&gt;
&lt;br /&gt;
Check the build as follows:&lt;br /&gt;
&lt;br /&gt;
 ld pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like the following. These 8 references to the postgres library all seem to be resolved at runtime.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgexodus.so: undefined reference to `Float8GetDatum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_atoi&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `CurrentMemoryContext&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_detoast_datum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pfree&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_start&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `MemoryContextAlloc&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_finish&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also check the following&lt;br /&gt;
&lt;br /&gt;
 ldd -u pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./pgexodus.so: error: symbol lookup error: undefined symbol: CurrentMemoryContext (continued)&lt;br /&gt;
undefined symbol: CurrentMemoryContext  (./pgexodus.so)&lt;br /&gt;
Unused direct dependencies:&lt;br /&gt;
&lt;br /&gt;
        /lib/librt.so.1&lt;br /&gt;
        /usr/lib/libpq.so.5&lt;br /&gt;
        /lib/libm.so.6&lt;br /&gt;
        /lib/libgcc_s.so.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Copy the library to the postgres library folder&lt;br /&gt;
&lt;br /&gt;
 sudo cp pgexodus.so `pg_config --pkglibdir`&lt;br /&gt;
&lt;br /&gt;
and restart postgres if this isnt the first time you are installing pgexodus&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
&lt;br /&gt;
For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
for redhat/centos&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=522</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=522"/>
		<updated>2009-07-08T13:10:10Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Installing pgexodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.35 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
Note that all routines are marked for &amp;quot;C linkage&amp;quot; in order to work with the postgres library &amp;quot;pq&amp;quot;. For convenience they are all compiled under C++ since callexodus requires boost which is c++. The .c routines could equally well be compiled with the plain c compiler. The link stage must be done in c++ style in order to link to the c++ runtime library &amp;quot;rt&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/exodus/pgexodus/src&lt;br /&gt;
&lt;br /&gt;
 g++ -fpic -c *.c *.cpp -I`pg_config --includedir` -I`pg_config --includedir-server`&lt;br /&gt;
 g++ -shared -o pgexodus.so *.o -lrt -lpq&lt;br /&gt;
&lt;br /&gt;
Check the build as follows:&lt;br /&gt;
&lt;br /&gt;
 ld pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like the following. These 8 references to the postgres library all seem to be resolved at runtime.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgexodus.so: undefined reference to `Float8GetDatum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_atoi&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `CurrentMemoryContext&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_detoast_datum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pfree&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_start&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `MemoryContextAlloc&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_finish&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also check the following&lt;br /&gt;
&lt;br /&gt;
 ldd -u pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./pgexodus.so: error: symbol lookup error: undefined symbol: CurrentMemoryContext (continued)&lt;br /&gt;
undefined symbol: CurrentMemoryContext  (./pgexodus.so)&lt;br /&gt;
Unused direct dependencies:&lt;br /&gt;
&lt;br /&gt;
        /lib/librt.so.1&lt;br /&gt;
        /usr/lib/libpq.so.5&lt;br /&gt;
        /lib/libm.so.6&lt;br /&gt;
        /lib/libgcc_s.so.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Copy the library to the postgres library folder&lt;br /&gt;
&lt;br /&gt;
 sudo cp pgexodus.so `pg_config --pkglibdir`&lt;br /&gt;
&lt;br /&gt;
and restart postgres if this isnt the first time you are installing pgexodus&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
&lt;br /&gt;
For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
for redhat/centos&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=521</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=521"/>
		<updated>2009-07-08T13:08:45Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Building pgexodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.35 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
Note that all routines are marked for &amp;quot;C linkage&amp;quot; in order to work with the postgres library &amp;quot;pq&amp;quot;. For convenience they are all compiled under C++ since callexodus requires boost which is c++. The .c routines could equally well be compiled with the plain c compiler. The link stage must be done in c++ style in order to link to the c++ runtime library &amp;quot;rt&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/exodus/pgexodus/src&lt;br /&gt;
&lt;br /&gt;
 g++ -fpic -c *.c *.cpp -I`pg_config --includedir` -I`pg_config --includedir-server`&lt;br /&gt;
 g++ -shared -o pgexodus.so *.o -lrt -lpq&lt;br /&gt;
&lt;br /&gt;
Check the build as follows:&lt;br /&gt;
&lt;br /&gt;
 ld pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like the following. These 8 references to the postgres library all seem to be resolved at runtime.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgexodus.so: undefined reference to `Float8GetDatum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_atoi&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `CurrentMemoryContext&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_detoast_datum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pfree&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_start&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `MemoryContextAlloc&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_finish&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also check the following&lt;br /&gt;
&lt;br /&gt;
 ldd -u pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./pgexodus.so: error: symbol lookup error: undefined symbol: CurrentMemoryContext (continued)&lt;br /&gt;
undefined symbol: CurrentMemoryContext  (./pgexodus.so)&lt;br /&gt;
Unused direct dependencies:&lt;br /&gt;
&lt;br /&gt;
        /lib/librt.so.1&lt;br /&gt;
        /usr/lib/libpq.so.5&lt;br /&gt;
        /lib/libm.so.6&lt;br /&gt;
        /lib/libgcc_s.so.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Copy the library to the postgres library folder&lt;br /&gt;
&lt;br /&gt;
 sudo cp pgexodus.so `pg_config --pkglibdir`&lt;br /&gt;
&lt;br /&gt;
and restart postgres if this isnt the first time you are installing pgexodus&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
&lt;br /&gt;
For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
for redhat/centos&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Ubuntu_8.04.1_LTS&amp;diff=520</id>
		<title>Log of an installation of libexodus on Ubuntu 8.04.1 LTS</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Log_of_an_installation_of_libexodus_on_Ubuntu_8.04.1_LTS&amp;diff=520"/>
		<updated>2009-07-08T13:01:48Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Preparation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Preparation ===&lt;br /&gt;
&lt;br /&gt;
 sudo su -&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
 apt-get install postgresql postgresql-server-dev* libpq-dev libboost-dev libboost-date-time-dev libboost-filesystem-dev libboost-regex-dev libboost-thread-dev build-essential subversion&lt;br /&gt;
&lt;br /&gt;
=== Exodus ===&lt;br /&gt;
&lt;br /&gt;
(pgexodus (which allows &amp;quot;sort/select/index by&amp;quot;) isnt included in this quick install)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
	println(oconv(date(),&amp;quot;D&amp;quot;));&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
&lt;br /&gt;
 /a.out&lt;br /&gt;
&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
 25 JUN 2009&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=519</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=519"/>
		<updated>2009-07-08T11:31:51Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Building pgexodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.35 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
Note that all routines are marked for &amp;quot;C linkage&amp;quot; in order to work with the postgres library &amp;quot;pq&amp;quot;. For convenience they are all compiled under C++ since callexodus requires boost which is c++. The .c routines could equally well be compiled with the plain c compiler. The link stage must be done in c++ style in order to link to the c++ runtime library &amp;quot;rt&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/exodus/pgexodus/src&lt;br /&gt;
&lt;br /&gt;
 g++ -fpic -c *.c *.cpp -I `pg_config --includedir --includedir-server`&lt;br /&gt;
 g++ -shared -o pgexodus.so *.o -lrt -lpq&lt;br /&gt;
&lt;br /&gt;
Check the build as follows:&lt;br /&gt;
&lt;br /&gt;
 ld pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like the following. These 8 references to the postgres library all seem to be resolved at runtime.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgexodus.so: undefined reference to `Float8GetDatum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_atoi&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `CurrentMemoryContext&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_detoast_datum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pfree&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_start&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `MemoryContextAlloc&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_finish&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also check the following&lt;br /&gt;
&lt;br /&gt;
 ldd -u pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./pgexodus.so: error: symbol lookup error: undefined symbol: CurrentMemoryContext (continued)&lt;br /&gt;
undefined symbol: CurrentMemoryContext  (./pgexodus.so)&lt;br /&gt;
Unused direct dependencies:&lt;br /&gt;
&lt;br /&gt;
        /lib/librt.so.1&lt;br /&gt;
        /usr/lib/libpq.so.5&lt;br /&gt;
        /lib/libm.so.6&lt;br /&gt;
        /lib/libgcc_s.so.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Copy the library to the postgres library folder&lt;br /&gt;
&lt;br /&gt;
 sudo cp pgexodus.so `pg_config --pkglibdir`&lt;br /&gt;
&lt;br /&gt;
and restart postgres if this isnt the first time you are installing pgexodus&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
&lt;br /&gt;
For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
for redhat/centos&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=518</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=518"/>
		<updated>2009-07-08T11:25:57Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Building pgexodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.35 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
Note that all routines are marked for &amp;quot;C linkage&amp;quot; in order to work with the postgres library &amp;quot;pq&amp;quot;. For convenience they are all compiled under C++ since callexodus requires boost which is c++. The .c routines could equally well be compiled with the plain c compiler. The link stage must be done in c++ style in order to link to the c++ runtime library &amp;quot;rt&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/exodus/pgexodus/src&lt;br /&gt;
&lt;br /&gt;
 g++ -fpic -c *.c *.cpp -I `pg_config --includedir-server`&lt;br /&gt;
 g++ -shared -o pgexodus.so *.o -lrt -lpq&lt;br /&gt;
&lt;br /&gt;
Check the build as follows:&lt;br /&gt;
&lt;br /&gt;
 ld pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like the following. These 8 references to the postgres library all seem to be resolved at runtime.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgexodus.so: undefined reference to `Float8GetDatum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_atoi&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `CurrentMemoryContext&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_detoast_datum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pfree&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_start&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `MemoryContextAlloc&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_finish&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also check the following&lt;br /&gt;
&lt;br /&gt;
 ldd -u pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./pgexodus.so: error: symbol lookup error: undefined symbol: CurrentMemoryContext (continued)&lt;br /&gt;
undefined symbol: CurrentMemoryContext  (./pgexodus.so)&lt;br /&gt;
Unused direct dependencies:&lt;br /&gt;
&lt;br /&gt;
        /lib/librt.so.1&lt;br /&gt;
        /usr/lib/libpq.so.5&lt;br /&gt;
        /lib/libm.so.6&lt;br /&gt;
        /lib/libgcc_s.so.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Copy the library to the postgres library folder&lt;br /&gt;
&lt;br /&gt;
 sudo cp pgexodus.so `pg_config --pkglibdir`&lt;br /&gt;
&lt;br /&gt;
and restart postgres if this isnt the first time you are installing pgexodus&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
&lt;br /&gt;
For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
for redhat/centos&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=517</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=517"/>
		<updated>2009-07-08T11:09:44Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Setting up Postgres for Exodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.35 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
Note that all routines are marked for &amp;quot;C linkage&amp;quot; in order to work with the postgres library &amp;quot;pq&amp;quot;. For convenience they are all compiled under C++ since callexodus requires boost which is c++. The .c routines could equally well be compiled with the plain c compiler. The link stage must be done in c++ style in order to link to the c++ runtime library &amp;quot;rt&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/exodus/pgexodus/src&lt;br /&gt;
&lt;br /&gt;
 g++ -fpic -c *.c *.cpp -I `pg_config --includedir-server` -I /usr/local/include/boost-1_38&lt;br /&gt;
 g++ -shared -o pgexodus.so *.o -lrt -lpq&lt;br /&gt;
&lt;br /&gt;
Check the build as follows:&lt;br /&gt;
&lt;br /&gt;
 ld pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like the following. These 8 references to the postgres library all seem to be resolved at runtime.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgexodus.so: undefined reference to `Float8GetDatum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_atoi&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `CurrentMemoryContext&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_detoast_datum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pfree&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_start&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `MemoryContextAlloc&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_finish&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also check the following&lt;br /&gt;
&lt;br /&gt;
 ldd -u pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./pgexodus.so: error: symbol lookup error: undefined symbol: CurrentMemoryContext (continued)&lt;br /&gt;
undefined symbol: CurrentMemoryContext  (./pgexodus.so)&lt;br /&gt;
Unused direct dependencies:&lt;br /&gt;
&lt;br /&gt;
        /lib/librt.so.1&lt;br /&gt;
        /usr/lib/libpq.so.5&lt;br /&gt;
        /lib/libm.so.6&lt;br /&gt;
        /lib/libgcc_s.so.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Copy the library to the postgres library folder&lt;br /&gt;
&lt;br /&gt;
 sudo cp pgexodus.so `pg_config --pkglibdir`&lt;br /&gt;
&lt;br /&gt;
and restart postgres if this isnt the first time you are installing pgexodus&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
&lt;br /&gt;
For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
for redhat/centos&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
 or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=516</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=516"/>
		<updated>2009-07-08T11:07:48Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Setting up Postgres for Exodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.35 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
Note that all routines are marked for &amp;quot;C linkage&amp;quot; in order to work with the postgres library &amp;quot;pq&amp;quot;. For convenience they are all compiled under C++ since callexodus requires boost which is c++. The .c routines could equally well be compiled with the plain c compiler. The link stage must be done in c++ style in order to link to the c++ runtime library &amp;quot;rt&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/exodus/pgexodus/src&lt;br /&gt;
&lt;br /&gt;
 g++ -fpic -c *.c *.cpp -I `pg_config --includedir-server` -I /usr/local/include/boost-1_38&lt;br /&gt;
 g++ -shared -o pgexodus.so *.o -lrt -lpq&lt;br /&gt;
&lt;br /&gt;
Check the build as follows:&lt;br /&gt;
&lt;br /&gt;
 ld pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like the following. These 8 references to the postgres library all seem to be resolved at runtime.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgexodus.so: undefined reference to `Float8GetDatum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_atoi&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `CurrentMemoryContext&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_detoast_datum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pfree&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_start&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `MemoryContextAlloc&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_finish&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also check the following&lt;br /&gt;
&lt;br /&gt;
 ldd -u pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./pgexodus.so: error: symbol lookup error: undefined symbol: CurrentMemoryContext (continued)&lt;br /&gt;
undefined symbol: CurrentMemoryContext  (./pgexodus.so)&lt;br /&gt;
Unused direct dependencies:&lt;br /&gt;
&lt;br /&gt;
        /lib/librt.so.1&lt;br /&gt;
        /usr/lib/libpq.so.5&lt;br /&gt;
        /lib/libm.so.6&lt;br /&gt;
        /lib/libgcc_s.so.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Copy the library to the postgres library folder&lt;br /&gt;
&lt;br /&gt;
 sudo cp pgexodus.so `pg_config --pkglibdir`&lt;br /&gt;
&lt;br /&gt;
and restart postgres if this isnt the first time you are installing pgexodus&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Unless you are only going to run Exodus as user &amp;quot;exodus&amp;quot; from the local machine, grant login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
&lt;br /&gt;
For more info see http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=515</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=515"/>
		<updated>2009-07-08T11:05:01Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Setting up Postgres for Exodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.35 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
Note that all routines are marked for &amp;quot;C linkage&amp;quot; in order to work with the postgres library &amp;quot;pq&amp;quot;. For convenience they are all compiled under C++ since callexodus requires boost which is c++. The .c routines could equally well be compiled with the plain c compiler. The link stage must be done in c++ style in order to link to the c++ runtime library &amp;quot;rt&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/exodus/pgexodus/src&lt;br /&gt;
&lt;br /&gt;
 g++ -fpic -c *.c *.cpp -I `pg_config --includedir-server` -I /usr/local/include/boost-1_38&lt;br /&gt;
 g++ -shared -o pgexodus.so *.o -lrt -lpq&lt;br /&gt;
&lt;br /&gt;
Check the build as follows:&lt;br /&gt;
&lt;br /&gt;
 ld pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like the following. These 8 references to the postgres library all seem to be resolved at runtime.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgexodus.so: undefined reference to `Float8GetDatum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_atoi&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `CurrentMemoryContext&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_detoast_datum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pfree&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_start&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `MemoryContextAlloc&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_finish&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also check the following&lt;br /&gt;
&lt;br /&gt;
 ldd -u pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./pgexodus.so: error: symbol lookup error: undefined symbol: CurrentMemoryContext (continued)&lt;br /&gt;
undefined symbol: CurrentMemoryContext  (./pgexodus.so)&lt;br /&gt;
Unused direct dependencies:&lt;br /&gt;
&lt;br /&gt;
        /lib/librt.so.1&lt;br /&gt;
        /usr/lib/libpq.so.5&lt;br /&gt;
        /lib/libm.so.6&lt;br /&gt;
        /lib/libgcc_s.so.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Copy the library to the postgres library folder&lt;br /&gt;
&lt;br /&gt;
 sudo cp pgexodus.so `pg_config --pkglibdir`&lt;br /&gt;
&lt;br /&gt;
and restart postgres if this isnt the first time you are installing pgexodus&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus. Use the given password for now.&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Allow login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
	<entry>
		<id>https://devwiki.neosys.com/index.php?title=Linux&amp;diff=514</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://devwiki.neosys.com/index.php?title=Linux&amp;diff=514"/>
		<updated>2009-07-08T11:03:25Z</updated>

		<summary type="html">&lt;p&gt;85.17.154.66: /* Setting up Postgres for Exodus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building and Installing libexodus ==&lt;br /&gt;
&lt;br /&gt;
requires Boost &amp;gt;= 1.35 and Postgres &amp;gt;= 8.1&lt;br /&gt;
&lt;br /&gt;
Following steps are from Centos 5.2/Boost 1.38/Postgres 8.3/Gnu Compiler 4.1.2&lt;br /&gt;
&lt;br /&gt;
alternatively:&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 8.04.1 LTS]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Ubuntu 9.04 Jaunty Jackalope]]&lt;br /&gt;
&lt;br /&gt;
[[Log of an installation of libexodus on Centos 5.3]]&lt;br /&gt;
&lt;br /&gt;
=== libexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing g++ compiler ====&lt;br /&gt;
&lt;br /&gt;
 yum list|grep gcc&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++.i386&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo aptitude install build-essential&lt;br /&gt;
&lt;br /&gt;
==== Installing Boost ====&lt;br /&gt;
&lt;br /&gt;
Minimum required is boost 1_35. Here we install 1.38.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Optionally get ICU to fully support unicode in boost regex&lt;br /&gt;
&lt;br /&gt;
 yum install libicu-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 apt-get install libicu-dev&lt;br /&gt;
&lt;br /&gt;
Download and unpack Boost Source&lt;br /&gt;
&lt;br /&gt;
 wget http://downloads.sourceforge.net/boost/boost_1_38_0.tar.bz2&lt;br /&gt;
 tar xvf boost_1_38_0.tar.bz2&lt;br /&gt;
 cd boost_1_38_0&lt;br /&gt;
&lt;br /&gt;
 ./configure --help&lt;br /&gt;
 ./configure --with-libraries=date_time,filesystem,iostreams,program_options,regex,system,thread&lt;br /&gt;
&lt;br /&gt;
Speed up the build of Boost by only doing the libraries and versions required. ADD additional config to the BJAM_CONFIG line as follows:&lt;br /&gt;
&lt;br /&gt;
 nano Makefile&lt;br /&gt;
&lt;br /&gt;
 BJAM_CONFIG= xxxxxxxxxxxxx -j4 variant=release link=shared&lt;br /&gt;
&lt;br /&gt;
Build Boost&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
Install Boost after becoming superuser&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Skip to the next section if on Ubuntu, this part is unnecessary.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;/usr/local/lib&amp;quot; to the list of lib directories to ensure that the boost libs can be found.&lt;br /&gt;
&lt;br /&gt;
 nano /etc/ld.so.conf&lt;br /&gt;
&lt;br /&gt;
Ensure the new config is operational.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
Ensure boost includes can be found. This step might be eliminated in a better Exodos installer.&lt;br /&gt;
&lt;br /&gt;
 ln -s /usr/local/include/boost-1_38/boost /usr/local/include/boost&lt;br /&gt;
&lt;br /&gt;
Quit superuser&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Building libexodus ===&lt;br /&gt;
&lt;br /&gt;
libexodus.so is a shared library that allows you to write c++ programs with the style and semantics of pick basic. If you want traditional pick-like dictionary based sort/select/index it requires pgexodus to be built and installed too.&lt;br /&gt;
&lt;br /&gt;
To give some insight into the automatic procedure see [[Manual Building with g++]]&lt;br /&gt;
&lt;br /&gt;
Either download Exodus using Subversion (recommended - latest version)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir exodus&lt;br /&gt;
 cd exodus&lt;br /&gt;
 svn co http://svn.neosys.com/svn/trunk&lt;br /&gt;
 cd trunk/exodus/exodus&lt;br /&gt;
&lt;br /&gt;
or download a tarball (may be out of date)&lt;br /&gt;
&lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://devwiki.neosys.com/images/2/2a/Exodus-9.6.0.tar.gz&lt;br /&gt;
 tar xvfz Exodus-9.6.0.tar.gz&lt;br /&gt;
 cd exodus-9.6.0&lt;br /&gt;
&lt;br /&gt;
Build and Install&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
A couple of installation steps that unfortunately have to be done by hand at the moment.&lt;br /&gt;
&lt;br /&gt;
 ldconfig&lt;br /&gt;
 ln -s /usr/local/include/exodus-9.6/exodus /usr/local/include/exodus &lt;br /&gt;
&lt;br /&gt;
Test that you can down develop in c++ with Exodus. The libs and includes will no longer be required with a better installer.&lt;br /&gt;
&lt;br /&gt;
 nano tester.cpp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #include &amp;lt;exodus/exodus.h&amp;gt;&lt;br /&gt;
 int main() {&lt;br /&gt;
	date().oconv(&amp;quot;D&amp;quot;).outputln();&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 g++ tester.cpp -lexodus-9.6 -I/usr/local/include/exodus&lt;br /&gt;
 ./a.out&lt;br /&gt;
 25 JUN 2009&lt;br /&gt;
&lt;br /&gt;
== Building and Installing pgexodus ==&lt;br /&gt;
&lt;br /&gt;
pgexodus.so is a shared library addin c function for postgres to perform sort/select/index functions otherwise it is not required.&lt;br /&gt;
&lt;br /&gt;
=== pgexodus Dependencies ===&lt;br /&gt;
&lt;br /&gt;
==== Installing Postgres ====&lt;br /&gt;
&lt;br /&gt;
Version 8.3&lt;br /&gt;
&lt;br /&gt;
 yum install postgresql&lt;br /&gt;
 yum install postgresql-devel&lt;br /&gt;
&lt;br /&gt;
or on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install postgresql-8.3&lt;br /&gt;
 sudo aptitude install postgresql-dev&lt;br /&gt;
 sudo aptitude install libpq-dev&lt;br /&gt;
&lt;br /&gt;
Locate libpq-fe.h to check. Probably in /usr/include/postgresql/ or /usr/include/postgresql/8.3/server/ on Ubuntu&lt;br /&gt;
&lt;br /&gt;
 updatedb&lt;br /&gt;
 locate libpq-fe.h&lt;br /&gt;
&lt;br /&gt;
=== Building pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Currently hand built without even a make file.  standard configure/make using autoconf/automake will be available soon http://www.lrde.epita.fr/~adl/dl/autotools.pdf&lt;br /&gt;
&lt;br /&gt;
Note that all routines are marked for &amp;quot;C linkage&amp;quot; in order to work with the postgres library &amp;quot;pq&amp;quot;. For convenience they are all compiled under C++ since callexodus requires boost which is c++. The .c routines could equally well be compiled with the plain c compiler. The link stage must be done in c++ style in order to link to the c++ runtime library &amp;quot;rt&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/exodus/pgexodus/src&lt;br /&gt;
&lt;br /&gt;
 g++ -fpic -c *.c *.cpp -I `pg_config --includedir-server` -I /usr/local/include/boost-1_38&lt;br /&gt;
 g++ -shared -o pgexodus.so *.o -lrt -lpq&lt;br /&gt;
&lt;br /&gt;
Check the build as follows:&lt;br /&gt;
&lt;br /&gt;
 ld pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like the following. These 8 references to the postgres library all seem to be resolved at runtime.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pgexodus.so: undefined reference to `Float8GetDatum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_atoi&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `CurrentMemoryContext&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pg_detoast_datum&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `pfree&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_start&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `MemoryContextAlloc&#039;&lt;br /&gt;
pgexodus.so: undefined reference to `elog_finish&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also check the following&lt;br /&gt;
&lt;br /&gt;
 ldd -u pgexodus.so&lt;br /&gt;
&lt;br /&gt;
Should give something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./pgexodus.so: error: symbol lookup error: undefined symbol: CurrentMemoryContext (continued)&lt;br /&gt;
undefined symbol: CurrentMemoryContext  (./pgexodus.so)&lt;br /&gt;
Unused direct dependencies:&lt;br /&gt;
&lt;br /&gt;
        /lib/librt.so.1&lt;br /&gt;
        /usr/lib/libpq.so.5&lt;br /&gt;
        /lib/libm.so.6&lt;br /&gt;
        /lib/libgcc_s.so.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installing pgexodus ===&lt;br /&gt;
&lt;br /&gt;
Copy the library to the postgres library folder&lt;br /&gt;
&lt;br /&gt;
 sudo cp pgexodus.so `pg_config --pkglibdir`&lt;br /&gt;
&lt;br /&gt;
and restart postgres if this isnt the first time you are installing pgexodus&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
&lt;br /&gt;
Register the c functions in postgres&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
 psql&lt;br /&gt;
 \connect exodus&lt;br /&gt;
&lt;br /&gt;
{{postgres function installation}}&lt;br /&gt;
&lt;br /&gt;
Check the functions loaded properly&lt;br /&gt;
&lt;br /&gt;
 \df exodus*&lt;br /&gt;
&lt;br /&gt;
Quit postgres command prompt and quite postgres user&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
For more information see http://www.postgresql.org/docs/8.1/static/app-psql.html&lt;br /&gt;
&lt;br /&gt;
=== Setting up Postgres for Exodus ===&lt;br /&gt;
&lt;br /&gt;
become user postgres and get into postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 sudo su - postgres&lt;br /&gt;
&lt;br /&gt;
 psql&lt;br /&gt;
&lt;br /&gt;
create a user and database for exodus&lt;br /&gt;
&lt;br /&gt;
 CREATE ROLE exodus LOGIN&lt;br /&gt;
  PASSWORD &#039;somesillysecret&#039;&lt;br /&gt;
  CREATEDB CREATEROLE;&lt;br /&gt;
&lt;br /&gt;
 CREATE DATABASE exodus&lt;br /&gt;
  WITH ENCODING=&#039;UTF8&#039;&lt;br /&gt;
    OWNER=exodus;&lt;br /&gt;
&lt;br /&gt;
#quit postgres command prompt&lt;br /&gt;
&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Allow login from 127.0.0.1 using username/unencrypted password (instead of only logged-in username without password)&lt;br /&gt;
http://developer.postgresql.org/pgdocs/postgres/auth-pg-hba-conf.html&lt;br /&gt;
&lt;br /&gt;
 nano data/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
&lt;br /&gt;
comment out the following lines&lt;br /&gt;
 #local   all         all                               ident sameuser&lt;br /&gt;
 #host    all         all         127.0.0.1/32          ident sameuser&lt;br /&gt;
&lt;br /&gt;
and add these lines&lt;br /&gt;
 local   all         all                               password&lt;br /&gt;
 host    all         all         127.0.0.1/32          password&lt;br /&gt;
 hostssl all         all         0.0.0.0/0             password&lt;br /&gt;
&lt;br /&gt;
quit postgres user&lt;br /&gt;
&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
 service postgresql reload&lt;br /&gt;
or for Ubuntu&lt;br /&gt;
 sudo /etc/init.d/postgresql restart&lt;br /&gt;
or&lt;br /&gt;
 sudo /etc/init.d/postgresql-8.3 restart&lt;br /&gt;
&lt;br /&gt;
== Building service ==&lt;br /&gt;
&lt;br /&gt;
service is an incomplete multithreaded framework to support dynamic loading of library routines and serving a request/response queue.&lt;br /&gt;
&lt;br /&gt;
www provides an optional web interface to the request/response queue. Windows only at the moment due to a single asp files but could be ported to php.&lt;br /&gt;
&lt;br /&gt;
=== Building service ===&lt;br /&gt;
&lt;br /&gt;
 cd ~/exodus/trunk/service/service&lt;br /&gt;
&lt;br /&gt;
 g++ -fPIC -c *.cpp -I/usr/local/include/boost-1_38 -I../../exodus/mv/src&lt;br /&gt;
 g++ -shared -o libservice.so -lc *.o&lt;br /&gt;
 g++ -o service main.cpp -I/usr/local/include/boost-1_38 -L. -L/usr/local/lib -lexodus -lpq -lboost_filesystem-gcc41-mt\&lt;br /&gt;
 -lboost_regex-gcc41-mt -lboost_thread-gcc41-mt -L../../exodus/mv/src -I../../exodus/mv/src -L./ -lservice&lt;br /&gt;
&lt;br /&gt;
=== Running service ===&lt;br /&gt;
&lt;br /&gt;
 export LD_LIBRARY_PATH=../../exodus/mv/src:.:/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
 ./service&lt;br /&gt;
&lt;br /&gt;
== Developing libexodus/pgexosdus/service ==&lt;br /&gt;
&lt;br /&gt;
=== Committing your developments ===&lt;br /&gt;
&lt;br /&gt;
First get a username and password by running the following unix command and send the output to an exodus subversion administrator eg steve.bush@neosys.com&lt;br /&gt;
&lt;br /&gt;
 htpasswd -nm YOURDESIREDUSERNAME&lt;br /&gt;
&lt;br /&gt;
The administrator needs to run the following command as root and enter the encrypted pass (the bit AFTER the :) ignoring the warning about plain text password because it is already encrypted.&lt;br /&gt;
&lt;br /&gt;
 htpasswd -p /etc/apache2/dav_svn.passwd YOURDESIREDUSERNAME&lt;/div&gt;</summary>
		<author><name>85.17.154.66</name></author>
	</entry>
</feed>