| 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 : 
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.
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
 .
 
Si vous obtenez l'erreur suivante de  
DBD-mysql
 , vous utilisez
probablement  
gcc
  (ou un vieux binaire compilé avec  
gcc
 ) :
 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.| 
/usr/bin/perl: can't resolve symbol '__moddi3'/usr/bin/perl: can't resolve symbol '__divdi3'
 | 
 
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 : 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| 
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.
 | 
 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.| 
$sysliblist .= " -lm -lz";
 | 
 
Notez que  
gcc
  doit être en version 2.95.2 ou plus récente :
 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
 .| 
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
 | 
 
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 : ou :| 
shell> LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib
 | 
 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> 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:
 | 
 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 -configshell> 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.| 
shell> perl Makefile.PL -static -configshell> make
 shell> make install
 shell> make perl
 | 
 |