2.7 Commentaires sur l'installation de Perl
2 Installation de MySQL
Manuel de Référence MySQL 4.1 : Version Française
. Installer Perl sur Unix . Installer ActiveState Perl sur Windows . Installer la distribution Perl de MySQL sous Windows ->Problems Using the Perl DBI / DBD Interface
|
2.7.4 Problems Using the Perl DBI / DBD Interface
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 Caldera/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 Caldera (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 Caldera (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.
|