martedì 13 marzo 2007

Problemi con libmysqlclient.so e mysql binary installation

Ho scaricato ed estratto
MySQL-shared-4.1.18-0.i386.rpm
Poi ho copiato in /usr/local/mysql/lib
i file e i link che conteneva l'rpm
ho aggiunto /usr/local/mysql/lib in /etc/ld.so.conf
e ho lancato ldconfig


Fonte:

http://www.elbnet.com/supportlinks/mysql/manual_Placeholder.html


M.2.4 Problems Using the Perl |DBI|/|DBD| Interface
<http://www.elbnet.com/supportlinks/mysql/manual_toc.html#Perl_support_problems>

If Perl reports that it can't find the `../mysql/mysql.so' module, then
the problem is probably that Perl can't locate the shared library
`libmysqlclient.so'.

You can fix this by any of the following methods:

* Compile the |Msql-Mysql-modules| distribution with |perl
Makefile.PL -static -config| rather than |perl Makefile.PL|.
* Copy |libmysqlclient.so| to the directory where your other shared
libraries are located (probably `/usr/lib' or `/lib').
* On Linux you can add the pathname of the directory where
`libmysqlclient.so' is located to the `/etc/ld.so.conf' file.
* Add the pathname of the directory where `libmysqlclient.so' is
located to the |LD_RUN_PATH| environment variable.

If you get the following errors from |DBD-mysql|, you are probably using
|gcc| (or using an old binary compiled with |gcc|):

/usr/bin/perl: can't resolve symbol '__moddi3'
/usr/bin/perl: can't resolve symbol '__divdi3'

Add |-L/usr/lib/gcc-lib/... -lgcc| to the link command when the
`mysql.so' library gets built (check the output from |make| for
`mysql.so' when you compile the Perl client). The |-L| option should
specify the pathname of the directory where `libgcc.a' is located on
your system.

Another cause of this problem may be that Perl and MySQL aren't both
compiled with |gcc|. In this case, you can solve the mismatch by
compiling both with |gcc|.

If you get the following error from |Msql-Mysql-modules| when you run
the tests:

t/00base............install_driver(mysql) failed: Can't load '../blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql: ../blib/arch/auto/DBD/mysql/mysql.so: undefined symbol: uncompress at /usr/lib/perl5/5.00503/i586-linux/DynaLoader.pm line 169.

it means that you need to include the compression library, -lz, to the
link line. This can be doing the following change in the file
`lib/DBD/mysql/Install.pm':

$sysliblist .= " -lm";

to

$sysliblist .= " -lm -lz";

After this, you MUST run 'make realclean' and then proceed with the
installation from the beginning.

If you want to use the Perl module on a system that doesn't support
dynamic linking (like SCO) you can generate a static version of Perl
that includes |DBI| and |DBD-mysql|. The way this works is that you
generate a version of Perl with the |DBI| code linked in and install it
on top of your current Perl. Then you use that to build a version of
Perl that additionally has the |DBD| code linked in, and install that.

On SCO, you must have the following environment variables set:

shell> LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib
or
shell> LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:/usr/progressive/lib:/usr/skunk/lib
shell> LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:/usr/progressive/lib:/usr/skunk/lib
shell> MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:/usr/skunk/man:

First, create a Perl that includes a statically linked |DBI| by running
these commands in the directory where your |DBI| distribution is located:

shell> perl Makefile.PL -static -config
shell> make
shell> make install
shell> make perl

Then you must install the new Perl. The output of |make perl| will
indicate the exact |make| command you will need to execute to perform
the installation. On SCO, this is |make -f Makefile.aperl inst_perl
MAP_TARGET=perl|.

Next, use the just-created Perl to create another Perl that also
includes a statically-linked |DBD::mysql| by running these commands in
the directory where your |Msql-Mysql-modules| distribution is located:

shell> perl Makefile.PL -static -config
shell> make
shell> make install
shell> make perl

Finally, you should install this new Perl. Again, the output of |make
perl| indicates the command to use.

Nessun commento: