2.7 Commentaires sur l'installation de Perl
2 Installer MySQL
Manuel de Référence MySQL 4.1 : Version Française
. Installer Perl sur Unix . Installer ActiveState Perl sur Windows ->Problèmes lors de l'utilisation des interfaces Perl DBI et DBD
|
2.7.3 Problèmes lors de l'utilisation des interfaces Perl DBI et DBD
Si Perl vous informe qu'il ne peut trouver le module
../mysql/mysql.so
,
il se trouve probablement que Perl n'arrive pas à trouver la bibliothèque partagée
libmysqlclient.so
.
Vous pouvez corriger cela en suivant l'une des méthodes suivantes :
-
Compilez la distribution
Msql-Mysql-modules
avec
perl
Makefile.PL -static -config
au lieu de
perl Makefile.PL
.
-
Copiez
libmysqlclient.so
dans le dossier où se situent vos
autres bibliothèques partagées (souvent
/usr/lib
ou
/lib
).
-
Modifiez l'option
-L
utilisée pour compiler
DBD::mysql
pour
refléter le chemin correct de
libmysqlclient.so
.
-
Sous Linux vous pouvez ajouter le chemin vers le dossier dans lequel se trouve
libmysqlclient.so
au fichier
/etc/ld.so.conf
.
-
Ajoutez le chemin complet vers le dossier où se situe
libmysqlclient.so
à la variable d'environnement
LD_RUN_PATH
.
Notez que vous aurez aussi besoin de modifier les options
-L
s'il y a
d'autres bibliothèques que le linker ne peut trouver. Par exemple, si le
linker ne peut trouver
libc
comme il est dans
/lib
et que la commande
de link spécifie
-L/usr/lib
, modifiez l'option
-L
en
-L/lib
ou ajoutez l'option
-L/lib
à la commande de link existante.
Si vous obtenez l'erreur suivante de
DBD-mysql
, vous utilisez
probablement
gcc
(ou un vieux binaire compilé avec
gcc
) :
/usr/bin/perl: can't resolve symbol '__moddi3' /usr/bin/perl: can't resolve symbol '__divdi3'
|
Ajoutez
-L/usr/lib/gcc-lib/... -lgcc
à la commande de liaison lorsque
la bibliothèque
mysql.so
est construite (vérifiez l'affichage de
make
concernant
mysql.so
quand vous compilez le client Perl). L'option
-L
doit spécifier le chemin vers le dossier où se situe
libgcc.a
sur votre
système.
Une autre cause du problème peut être que Perl et MySQL ne sont pas tous deux
compilés avec
gcc
. Dans ce cas là, vous devrez faire en sorte qu'ils le soient.
Si vous obtenez les erreurs suivantes de la part de
Msql-Mysql-modules
quand vous exécutez ces 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.
|
cela signifie que vous avez besoin d'inclure la bibliothèque dynamique, -lz,
dans la ligne de liaison. Cela peut se faire en changeant ce qui suit dans
lib/DBD/mysql/Install.pm
:
en
$sysliblist .= " -lm -lz";
|
Après cela, vous
devez
exécuter 'make realclean' et reprendre l'installation
dès le début.Si vous voulez installer
DBI
sur SCO, vous devez éditer le fichier
Makefile
de
DBI-xxx
et chaque sous-dossier.
Notez que
gcc
doit être en version 2.95.2 ou plus récente :
ANCIEN: NOUVEAU: CC = cc CC = gcc CCCDLFLAGS = -KPIC -W1,-Bexport CCCDLFLAGS = -fpic CCDLFLAGS = -wl,-Bexport CCDLFLAGS = LD = ld LD = gcc -G -fpic LDDLFLAGS = -G -L/usr/local/lib LDDLFLAGS = -L/usr/local/lib LDFLAGS = -belf -L/usr/local/lib LDFLAGS = -L/usr/local/lib LD = ld LD = gcc -G -fpic OPTIMISE = -Od OPTIMISE = -O1 OLD: CCCFLAGS = -belf -dy -w0 -U M_XENIX -DPERL_SCO5 -I/usr/local/include NEW: CCFLAGS = -U M_XENIX -DPERL_SCO5 -I/usr/local/include
|
Ceci est dû au fait que le chargeur dynamique de Perl ne va pas charger
les modules
DBI
, s'ils sont compilés avec
icc
ou
cc
.
Si vous voulez utiliser le module de Perl sur un système qui ne supporte
pas les liaisons dynamiques (comme Caldera/SCO) vous pouvez générer une version
statique de Perl incluant
DBI
et
DBD-mysql
. L'approche est de générer
une version de Perl avec le code de
DBI
lié et de l'installer au dessus de
votre Perl courant. Puis vous utilisez cette version pour en créer à nouveau une
autre qui comporte le code de
DBD
lié et d'installer cette version ci.
Sur Caldera (SCO), vous devez définir les variables d'environnement suivantes :
shell> LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib
|
ou :
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:
|
D'abord, créez un Perl incluant un
DBI
lié statiquement en exécutant
des commandes dans le dossier où se situe votre distribution
DBI
:
shell> perl Makefile.PL -static -config shell> make shell> make install shell> make perl
|
Ensuite, vous devez installer le nouveau Perl. Les affichages de
make perl
vous indiqueront les commandes
make
exactes que vous aurez besoin d'exécuter
pour faire l'installation. Sur Caldera (SCO), il s'agit de
make -f Makefile.aperl inst_perl MAP_TARGET=perl
.Puis, utilisé le Perl qui vient d'être créé pour en créer un nouveau qui inclut
un
DBD::mysql
lié statiquement en exécutant ces commandes dans le dossier
où votre distribution de
Msql-Mysql-modules
se situe :
shell> perl Makefile.PL -static -config shell> make shell> make install shell> make perl
|
Finalement, vous devez installer ce nouveau Perl. Une fois de plus, l'affichage de
make perl
vous indiquera la commande à utiliser.
|