On Tue, Apr 27, 2010 at 11:17 AM, Royce Miller <royce...@pacbell.net> wrote:

> I am taking over the Perl stuff for someone that was laid off.  The
> previous guy built Perl with CGI, DBI and DBD modules for use with a
> Informix database and IBM IHS web server.  He then tar'd it all up and
> copied it to a different server and where thing do not all working.  I know,
> sounds obvious.  There are some scripts that are interactive or run by Unix
> CRON scheduler on the system and others that are web pages used for
> reporting.  The interactive stuff works fine on the new system, but the web
> pages fail.
>
> The error is:
> Software error:
> install_driver(Informix) failed: Can't load
> '/home/users/polling/perl/lib/site_perl/5.8.8/sun4-solaris-64/auto/DBD/Informix/Informix.so'
> for module DBD::Informix: ld.so.1: SdtQuery.pl: fatal: libifsql.so: open
> failed: No such file or directory at
> /home/users/polling/perl/lib/5.8.8/sun4-solaris-64/DynaLoader.pm line 230.
> at (eval 32) line 3  Compilation failed in require at (eval 32) line 3.
>  Perhaps a required shared library or dll isn't installed where expected
> at /home/users/polling/SDT-2.0/SDT/SDTDB.pm line 443
> This is Perl 5.8.8 running on Solaris 2.8 on V490 Hardware.  All is 64 bit.
>  I am considering rebuilding these modules.  I have the source for DBI and
> DBD but don't seem to have the source for CGI.  I figured I would check with
> the pros before I start doing things.
> Any ideas or suggestions?
> Thank you for your time!
> Royce


Dear Royce,

This is all about Informix and nothing to do with CGI per se - as others
have said.  In future, please include DBD::Informix in the subject line - it
helps me spot that the question is about Informix.  Or copy the email
address dbd.infor...@gmail.com with the request too.  This information is in
the README file for DBD::Informix.

You should find under one of the DBD/Informix directories (probably
/home/users/polling/perl/lib/site_perl/5.10.1/sun4-solaris-64/DBD/Informix)
you should a file Defaults.pm.  In there, you should find a value for
INFORMIXDIR.


        sub default_INFORMIXDIR
        {
                return '/usr/informix/11.50.FC3';
        }
        sub default_INFORMIXSERVER
        {
                return 'black_19';
        }

This is from my machine (Solaris 10, Perl 5.10.1).

You need to ensure that the LD_LIBRARY_PATH (or LD_LIBRARY_PATH_64) includes
the directories:

    $INFORMIXDIR/lib
    $INFORMIXDIR/lib/esql

If the specified directory does not exist, then you need to review what to
do next.  Options include (1) creating a symlink at the official location
pointing to the current in-service $INFORMIXDIR, (2) poking around the
ld.so.1 configuration with crle (intuitive name!) to add Informix
directories to the system list of directories, or (3) rebuilding
DBD::Informix to use the new location of $INFORMIXDIR.

Option (3) may be the 'best' solution.  You can also build DBD::Informix
with the environment variable DBD_INFORMIX_RELOCATABLE_INFORMIXDIR set to 1
or yes or anything else that Perl will evaluate as 'true' (so not empty, nor
0).  This means that the libraries will be linked solely via the
LD_LIBRARY_PATH or crle settings - rather than having a path built in.  This
is more typically a nuisance (especially in contexts such as web servers -
because web servers reset their environment completely and zap the inherited
value for LD_LIBRARY_PATH) and is not the default behaviour.

-- 
Jonathan Leffler <jonathan.leff...@gmail.com>  #include <disclaimer.h>
Guardian of DBD::Informix - v2008.0513 - http://dbi.perl.org
"Blessed are we who can laugh at ourselves, for we shall never cease to be
amused."

Reply via email to