Linux: Difference between revisions

From NEOSYS Dev Wiki
Jump to navigationJump to search
 
(55 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Building and Installing libexodus ==
==== [[Install/Test/Uninstall - Redhat5/Centos5/Fedora15|Redhat/Fedora/Centos]] ====


requires Boost >= 1.32 and Postgres >= 8.1
==== [[Install/Test/Uninstall - Ubuntu 10.04 LTS|Ubuntu/Debian]] ====


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

Latest revision as of 19:51, 10 July 2011