[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