[OPEN-ILS-DEV] Staff Client Errors

Mike Rylander mrylander at gmail.com
Tue Sep 22 20:07:39 EDT 2009


On Tue, Sep 22, 2009 at 7:22 PM, Ryan <ryan484lav at gmail.com> wrote:
> I am trying to do a fresh install and will see what the outcome is.
>
> On Tue, Sep 22, 2009 at 7:00 PM, Jason Etheridge <jason at esilibrary.com>
> wrote:
>>
>> This was troubleshooted some in IRC.  The database installation failed
>> with createlang giving an error like this:
>>
>> createlang: language installation failed: ERROR:  could not load
>> library "/usr/local/stow/pgsql/lib/plperl.so":
>> /usr/local/stow/pgsql/lib/plperl.so: undefined symbol: boot_DynaLoader
>>

I've seen this error once before, and while I have no idea why it
shows up, I do know what it is and how to fix it.  It seems that it's
not hard to build libperl in such a way that it doesn't export the
symbols that some C-based Perl modules need.  Then, they go insane and
can't find themselves.  To fix it you need to add the following to the
environment of the process that starts postgres:

LD_PRELOAD=/usr/lib/libperl.so

So, if you were to use, say, /etc/rc.local to push up the amount of
shared memory that a process can request and then start postgres using
psql (that is, instead of using a script in /etc/init.d/) then you
would have something very similar to the following in your rc.local
...

------8<-------------------------------

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

#####################################
########    Start Postgres    #######
#####################################

echo 700000000 > /proc/sys/kernel/shmmax
su - postgres -c 'LD_PRELOAD=/usr/lib/libperl.so pg_ctl -D
/usr/local/pgsql/data -l /home/postgres/logfile start'

------8<-------------------------------

You can adjust the commands in any distro-installed init scripts in a
similar manner.  The key is adding the LD_PRELOAD environment
variable.  And, of course, make sure you point at where your
libperl.so is, if it's not in /usr/lib/.

-- 
Mike Rylander
 | VP, Research and Design
 | Equinox Software, Inc. / The Evergreen Experts
 | phone:  1-877-OPEN-ILS (673-6457)
 | email:  miker at esilibrary.com
 | web:  http://www.esilibrary.com


More information about the Open-ils-dev mailing list