]Project-open[ on Debian ETCH

These are the instructions and the packages for installing ]Project-open[ on a Debian ETCH. You’ll surely find another way, but this works for me, and I hope maybe it will help you too.

Lots of thanks to Martin Van Es for his help on updating to PostgreSQL 8.1 and Aolserver4.
NOTE: As seen in a comment, don’t use PostgreSQL version 8.3 because it’s still not working well with ]PO[. You should use 8.1 for now.

po-mini.jpg

1. Packages

Install system dependencies for ]PO[

apt-get install libreadline5-dev zlib1g-dev tcl8.4 tcl8.4-dev tk8.4-dev bison flex cdbs libpam0g-dev libperl-dev python2.4-dev python-dev x-dev

2. Aolserver

Install Aolserver4, needed modules and tdom

apt-get install aolserver4 aolserver4-dev aolserver4-doc aolserver4-nscache aolserver4-nsopenssl aolserver4-nspostgres aolserver4-nssha1 aolserver4-nsxml tdom

3. PostgreSQL

Install PostgreSQL and the contrib package (contains tsearch2, needed for fulltextsearch feature)

apt-get install postgresql-8.1 postgresql-contrib-8.1

Need to change some behaviour on PostgreSQL config. Edit /etc/postgresql/8.1/main/postgresql.conf. Look for VERSION/PLATFORM COMPATIBILITY section, and enable these variables as follows

add_missing_from = on
regex_flavor = extended
default_with_oids = on

Edit /etc/postgresql/8.1/main/pg_hba.conf. Look for the local IPv4 local connections section, and change md5 auth with ident as follows

# IPv4 local connections:
#host    all         all         127.0.0.1/32          md5
host    all         all         127.0.0.1/32          ident sameuser

Restart postgresql

/etc/init.d/postgresql-8.1 restart

3. ]Project-open[

Download and install ]PO[ package

wget -c http://ivanhq.net/po/deb/project-open_3.2-1_i386.deb
dpkg -i project-open_3.2-1_i386.deb

Create a user and a group for running ]po[

groupadd projop
useradd -g projop -d /web/projop -s /bin/bash projop

Create a log dir and change permissions on the website for the new user

mkdir /web/projop/log
chown -R projop:projop /web/projop

Create a new database for ]PO[ (default postgres charset is latin9, set it to utf8)

su - postgres
createuser -a -d projop
createdb --owner=projop projop -E UTF8
createlang plpgsql projop
exit

Load demo data into the new database

su - projop
cd /web/projop/packages/intranet-core/preconf
gzip -d project-open-3.2.sql.gz
psql projop -f project-open-3.2.sql

Check the data has been correctly imported

psql projop
 
projop=# select count(*) from users;
 count
-------
   196
(1 row)
 
projop=# \\q

Edit config file (/web/projop/etc/config.tcl) and change main path settings

#set homedir                   /usr/local/aolserver
#set bindir                    [file dirname [ns_info nsd]]

set homedir                   /usr/lib/aolserver4
set bindir                    /usr/lib/aolserver4/bin

Launch the server to see if it works okay

/usr/sbin/aolserver4-nsd -f -t /web/projop/etc/config.tcl -u projop -g projop

# Ctrl+C to stop

Exit user projop

exit

4. Init system

Edit default Aolserver4 init script /etc/init.d/aolserver4 and change next parameters

#USER=www-data
#GROUP=www-data
#ADDRESS=127.0.0.1
#CONF=/etc/aolserver4/aolserver4.tcl

USER=projop
GROUP=projop
ADDRESS=0.0.0.0
CONF=/web/projop/etc/config.tcl

Change next line (about line 42, remove -s main)

#-u $USER -g $GROUP -b $ADDRESS:$PORT -s main -t $CONF >/dev/null 2>&1
-u $USER -g $GROUP -b $ADDRESS:$PORT -t $CONF >/dev/null 2>&1

Test everything works

reboot

BE PATIENT, ]po[ can take up to 1 min to start after rebooting.

5. Config

Look into config file (/web/projop/etc/config.tcl) for tuning your server sitename, listening port, etc

6. Enjoy

Again, spacial thanks to Martin Van Es for mailing me with the tips on this update.

105 thoughts on “]Project-open[ on Debian ETCH”

  1. Database operation “select” failed
    (exception ERROR, “ERROR: function to_date(timestamp with time zone, unknown) does not exist
    LINE 14: , (to_date(start_date,’YYYY-MM-DD HH24:MI:SS’) – to_date…
    ^
    HINT: No function matches the given name and argument types. You might need to add explicit type casts.
    “)
    pqerror was: “ERROR: function to_date(timestamp with time zone, unknown) does not exist
    LINE 14: , (to_date(start_date,’YYYY-MM-DD HH24:MI:SS’) – to_date…
    ^
    HINT: No function matches the given name and argument types. You might need to add explicit type casts.

    (Status of PQexec call: PGRES_FATAL_ERROR)
    SQL:
    select
    to_char(start_date, ‘YYYY-MM-DD HH24:MI:SS’) as ansi_start_date,
    to_char(end_date, ‘YYYY-MM-DD HH24:MI:SS’) as ansi_end_date,
    to_number(to_char(start_date,’HH24′),’90’) as start_hour,
    to_number(to_char(end_date,’HH24′),’90’) as end_hour,
    to_number(to_char(end_date,’MI’),’90’) as end_minutes,
    coalesce(e.name, a.name) as name,
    coalesce(e.status_summary, a.status_summary) as status_summary,
    e.event_id as item_id,
    cit.type as item_type,
    cals.calendar_id,
    cals.calendar_name
    , (to_date(start_date,’YYYY-MM-DD HH24:MI:SS’) – to_date(‘2011-03-20 00:00:00’, ‘YYYY-MM-DD HH24:MI:SS’)) as day_of_week
    from
    acs_activities a,
    acs_events e,
    timespans s,
    time_intervals t,
    calendars cals,
    cal_items ci left join
    cal_item_types cit on cit.item_type_id = ci.item_type_id
    where
    e.timespan_id = s.timespan_id
    and s.interval_id = t.interval_id
    and e.activity_id = a.activity_id
    and start_date between
    to_date(‘2011-03-20 00:00:00’, ‘YYYY-MM-DD HH24:MI:SS’) and to_date(‘2011-03-26 00:00:00’, ‘YYYY-MM-DD HH24:MI:SS’)

    and ci.cal_item_id= e.event_id
    and cals.calendar_id = ci.on_which_calendar
    and acs_permission__permission_p (cals.calendar_id, ‘624’, ‘read’) = ‘t’
    and e.event_id = ci.cal_item_id

    and ((cals.package_id = ‘21531’ and cals.private_p = ‘f’)
    or (cals.private_p = ‘t’ and cals.owner_id = ‘624’))

    order by to_char(start_date, ‘J’), to_char(start_date,’HH24:MI’)

    while executing
    “ns_pg_bind select nsdb1 {
    select
    to_char(start_date, ‘YYYY-MM-DD HH24:MI:SS’) as ansi_start_date,
    to_char(end_date, ‘YYYY-MM-DD HH24:MI:SS’) as a…”
    (“uplevel” body line 1)
    invoked from within
    “uplevel $ulevel [list ns_pg_bind $type $db $sql]”
    (“postgresql” arm line 2)
    invoked from within
    “switch $driverkey {
    oracle {
    return [uplevel $ulevel [list ns_ora $type $db $sql] $args]
    }
    …”
    invoked from within
    “db_exec select $db $full_statement_name $sql”
    invoked from within
    “set selection [db_exec select $db $full_statement_name $sql]”
    (“uplevel” body line 2)
    invoked from within
    “uplevel 1 $code_block ”
    invoked from within
    “db_with_handle -dbn $dbn db {
    set selection [db_exec select $db $full_statement_name $sql]

    set counter 0
    while { [db_getrow $…”
    (procedure “db_foreach” line 36)
    invoked from within
    “db_foreach dbqd.calendar.www.views.select_items {} {

    # Replace $ (variable dollars) by harmless “X”
    regsub {\$} $name X name

    # Convert f…”
    (“uplevel” body line 73)
    invoked from within
    “uplevel {
    if {[info exists url_stub_callback]} {
    # This parameter is only set if this file is called from .LRN.
    # This way I make sure …”
    (procedure “code::tcl::/web/projop/packages/calendar/www/view-week-displ…” line 2)
    invoked from within
    “code::tcl::$__adp_stub”
    invoked from within
    “if { [file exists $__adp_stub.tcl] } {

    # ensure that data source preparation procedure exists and is up-to-date
    adp_init tcl $__adp_stub
    …”
    (“uplevel” body line 3)
    invoked from within
    “uplevel {

    if { [file exists $__adp_stub.tcl] } {

    # ensure that data source preparation procedure exists and is up-to-date
    adp_init t…”
    (procedure “adp_prepare” line 2)
    invoked from within
    “adp_prepare ”
    (procedure “template::adp_parse” line 30)
    invoked from within
    “template::adp_parse /web/projop/packages/calendar/www/view-week-display {base_url /calendar/ date 2011-03-24 package_id 21531 show_calendar_name_p 0 r…”
    (“uplevel” body line 1)
    invoked from within
    “uplevel [list template::adp_parse [template::util::url_to_file $template [ad_conn file]] $template_params]”
    (procedure “ad_parse_template” line 15)
    invoked from within
    “ad_parse_template -params $params “/packages/calendar/www/view-week-display””
    (procedure “im_calendar_home_component” line 10)
    invoked from within
    “im_calendar_home_component”
    (“uplevel” body line 1)
    invoked from within
    “uplevel 1 $component_tcl”
    invoked from within
    “set component_html [uplevel 1 $component_tcl]”
    (“uplevel” body line 8)
    invoked from within
    “uplevel 1 $code_block ”
    (“1” arm line 1)
    invoked from within
    “switch $errno {
    0 {
    # TCL_OK
    }
    1 {
    # TCL_ERROR
    …”
    (“while” body line 20)
    invoked from within
    “while { [db_getrow $db $selection] } {
    incr counter
    if { [info exists array_val] } {
    unset array_val
    …”
    (“uplevel” body line 5)
    invoked from within
    “uplevel 1 $code_block ”
    invoked from within
    “db_with_handle -dbn $dbn db {
    set selection [db_exec select $db $full_statement_name $sql]

    set counter 0
    while { [db_getrow $…”
    (procedure “db_foreach” line 36)
    invoked from within
    “db_foreach get_plugins $plugin_sql {

    if {$any_perms_set_p > 0 && “f” == $perm} { continue }

    if {“” == $sort_order} { set sort_order $default_sort…”
    (procedure “im_component_bay” line 71)
    invoked from within
    “im_component_bay left”
    invoked from within
    “append __adp_output [im_component_bay left] ”
    (“uplevel” body line 24)
    invoked from within
    “uplevel {
    set __adp_output “”

    set __adp_master [template::util::url_to_file “[ad_parameter -package_id [ad_conn subsite_id] DefaultMaster …”
    (procedure “template::code::adp::/web/projop/packages/intranet-core/www/…” line 2)
    invoked from within
    “template::code::${template_extension}::$__adp_stub”
    (procedure “template::adp_parse” line 68)
    invoked from within
    “template::adp_parse [file root [ad_conn file]] {}”
    (procedure “adp_parse_ad_conn_file” line 5)
    invoked from within
    “$handler”
    (“uplevel” body line 2)
    invoked from within
    “uplevel $code”
    invoked from within
    “ad_try {
    $handler
    } ad_script_abort val {
    # do nothing
    }”
    invoked from within
    “rp_serve_concrete_file [ad_conn file]”
    (procedure “rp_serve_abstract_file” line 60)
    invoked from within
    “rp_serve_abstract_file “$root/$path””
    (“uplevel” body line 2)
    invoked from within
    “uplevel $code”
    invoked from within
    “ad_try {
    rp_serve_abstract_file “$root/$path”
    set tcl_url2file([ad_conn url]) [ad_conn file]
    set tcl_url2path_info…”

  2. Hi Ivan,
    Are you still here because the latest post from you is quite old !
    Febrero 15th, 2010 at 23:13.
    I contact you because i’ve tried many install of Project Open and none of them work.
    The problems are :
    – Debian Etch it’s now out of date (Squeeze is the current release)
    – Postgresql 8.1 is not available anymore
    ___
    So It doesn’t work for all these reasons.
    Do you have a repository where we can get those packages.
    Do you plan to publish a new install tutorial.
    Sincerly.
    Thierry Forest

  3. Please help me.
    I did everything and on starting de aolserver.
    I have this error:

    [19/Jun/2015:15:33:06][25763.1407223616][-main-] Notice: nsd.tcl: starting to read config file…
    [19/Jun/2015:15:33:21][25763.1407223616][-main-] Error: Tcl exception:
    no files matched glob pattern “/usr/lib/aolserver4/lib/thread*/libthread*.so”
    while executing
    “glob ${homedir}/lib/thread*/libthread*[info sharedlibextension]”
    invoked from within
    “lindex [glob ${homedir}/lib/thread*/libthread*[info sharedlibextension]] 0”
    invoked from within
    “ns_param libthread [lindex [glob ${homedir}/lib/thread*/libthread*[info sharedlibextension]] 0]”
    [19/Jun/2015:15:33:21][25763.1407223616][-main-] Fatal: config error

    Thanks.

Leave a Reply

Your email address will not be published.