• Aucun résultat trouvé

Commentaires sur l'installation de Perl

Chapitre 2. Installer MySQL

2.9. Commentaires sur l'installation de Perl

Le support MySQL par Perl est fournis grâce à l'interfaceDBI/DBD. Cette interface requiert Perl Version 5.6.0 ou plus récent. Elle fonctionnera pas si vous avez une autre version plus ancienne de Perl.

Si vous voulez utiliser les transactionsa vec PerlDBI, vous devez installerDBD::mysqlversion 1.2216 ou plus récent. La version 2.9003 ou plus récent est recommandée.

Notez que si vous utilisez la bibliothèque client MySQL 4.1, vous devrez utiliserDBD::mysql2.9003 ou plus récent.

Depuis la version 3.22.8, le support de Perl n'est plus inclut dans les distribution de MySQL. Vous pouvez obtenir les modules requis sur le sitehttp://search.cpan.orgpour Unix, ou sur le site de ActiveState (fichiersppm) pour Windows. La section suivante décrit comment faire.

Le support de MySQL par Perl doit être installé si vous voulez exécuter les scripts de tests de performances. SeeSection 7.1.4, « La suite de tests MySQL ».

2.9.1. Installer Perl sur Unix

Le support Perl de MySQL requièrt que vous ayez installé le support de programmation de clients pour MySQL. Si vous avez installé

MySQL à partir de fichiersRPM, les programmes clients sont dans leRPMclient, mais le support de la programmation de clients est dans leRPMdes développeurs. Assurez-vous d'avoir installé le dernierRPM.

Si vous voulez installer le support Perl, les fichiers dont vous avez besoin sont disponible sur la bibliothèque CPAN (Comprehensive Perl Archive Network) àhttp://search.cpan.org.

Le moyen le plus facile pour installer le module Unix de Perl et d'utilise le moduleCPAN. Par exemple :

shell> perl -MCPAN -e shell cpan> install DBI

cpan> install DBD::mysql

L'installation deDBD::mysqleffectue de nombreux tests. Ces tests requièrent une connexion local au serveur MySQL, en tant qu'utilisateur anonyme, sans mot de passe. Si vous avez supprimé l'accès anonyme, ou assigné des mots de passe, les tests échoueront.

Vous pouvez utiliserforce install DBD::mysqlpour ignorer ces tests.

DBIrequiert le moduleData::Dumper. Il peut être déjà installé. Si non, vous devez l'installer avant d'installerDBI.

Il est aussi possible de télécharger la distribution module sous la forme d'une archivetarcompressée, et de compiler manuellement les modules. Par exemple, pour décompresser et construire la distributionDBI, utilisez cette procédure :

1. Décompressez la distribution dans le dossier courant :

shell> gunzip < DataDumperVERSION.tar.gz | tar xvf

-Cette commande crée un dossier appeléData-Dumper-VERSION.

2. Mettez vous dans le répertoire racine de la distribution décompressée :

shell> cd DBI-VERSION

3. Construisez la distribution et compilez tout :

shell> perl Makefile.PL shell> make

shell> make test shell> make install

La commandemake testest importante car elle vérifie que le module fonctionne. Notez que quand vous exécutez cette commande durant l'installation deMsql-Mysql-modulespour tester le code de l'interface, le serveur MySQL doit être en marche sinon le test échouera.

Il est bon de reconstruire et réinstaller la distributionMsql-Mysql-modulesà chaque fois que vous réinstallez une nouvelle version de MySQL, particulièrement si vous avez des problèmes avec vos scriptsDBIaprès avoir avoir mis à jour MySQL.

Si vous n'avez pas le droit d'installer des modules Perl dans le dossier système ou que vous voulez installer des modules locaux de Perl, la référence suivante pourra vous aider :http://www.iserver.com/support/contrib/perl5/modules.html

Regardez le paragraphe ``Installing New Modules that Require Locally Installed Modules.''

2.9.2. Installer ActiveState Perl sur Windows

Pour installer le moduleDBDMySQL avec ActiveState Perl sous Windows, vous devez faire ce qui suit :

• Obtenez ActiveState Perl à partir dehttp://www.activestate.com/Products/ActivePerl/et installez le.

• Ouvrez un terminal DOS.

• Si requis, définissez la variable HTTP_proxy. Par exemple, vous pouvez faire :

set HTTP_proxy=my.proxy.com:3128

• Démarrez le programme PPM :

Installer MySQL

C:\> c:\perl\bin\ppm.pl

• InstallezDBI, si ce n'est pas déjà fait :

ppm> install DBI

• Si cela fonctionne, exécutez la commande suivante :

install \

ftp://ftp.de.uu.net/pub/CPAN/authors/id/JWIED/DBD-mysql-1.2212.x86.ppd

Ce qui suit devrait fonctionner avec la version 5.6 d'ActiveState Perl.

Si ce qui précède ne veut pas fonctionner, vous devez à la place installer le piloteMyODBCet vous connecter au serveur MySQL via ODBC :

use DBI;

$dbh= DBI->connect("DBI:ODBC:$dsn","$utilisateur","$motdepasse") ||

die "Obtenu l'erreur $DBI::errstr lors de la connexion à $dsn\n";

2.9.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éelibmysqlclient.so.

Vous pouvez corriger cela en suivant l'une des méthodes suivantes :

• Compilez la distributionMsql-Mysql-modulesavecperl Makefile.PL -static -configau lieu deperl Makefile.PL.

• Copiezlibmysqlclient.sodans le dossier où se situent vos autres bibliothèques partagées (souvent/usr/libou/lib).

• Modifiez l'option-Lutilisée pour compilerDBD::mysqlpour refléter le chemin correct delibmysqlclient.so.

• Sous Linux vous pouvez ajouter le chemin vers le dossier dans lequel se trouvelibmysqlclient.soau fichier/ etc/ld.so.conf.

• Ajoutez le chemin complet vers le dossier où se situelibmysqlclient.soà la variable d'environnementLD_RUN_PATH.

Notez que vous aurez aussi besoin de modifier les options-Ls'il y a d'autres bibliothèques que le linker ne peut trouver. Par exemple, si le linker ne peut trouverlibccomme il est dans/libet que la commande de link spécifie-L/usr/lib, modifiez l'option-Len -L/libou ajoutez l'option-L/libà la commande de link existante.

Si vous obtenez l'erreur suivante deDBD-mysql, vous utilisez probablementgcc(ou un vieux binaire compilé avecgcc) :

/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èquemysql.soest construite (vérifiez l'affichage demakeconcernantmysql.soquand vous compilez le client Perl). L'option-Ldoit spécifier le chemin vers le dossier où se situelibgcc.asur votre système.

Une autre cause du problème peut être que Perl et MySQL ne sont pas tous deux compilés avecgcc. Dans ce cas là, vous devrez faire en sorte qu'ils le soient.

Si vous obtenez les erreurs suivantes de la part deMsql-Mysql-modulesquand 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 danslib/DBD/mysql/Install.pm:

$sysliblist .= " -lm";

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 installerDBIsur SCO, vous devez éditer le fichierMakefiledeDBI-xxxet chaque sous-dossier.

Notez quegccdoit ê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 modulesDBI, s'ils sont compilés aveciccoucc.

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 incluantDBIetDBD-mysql. L'approche est de générer une version de Perl avec le code deDBIlié 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 deDBDlié 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 unDBIlié statiquement en exécutant des commandes dans le dossier où se situe votre distributionDBI:

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

shell> make install shell> make perl

Ensuite, vous devez installer le nouveau Perl. Les affichages demake perlvous indiqueront les commandesmakeexactes que vous aurez besoin d'exécuter pour faire l'installation. Sur Caldera (SCO), il s'agit demake -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 unDBD::mysqllié statiquement en exécutant ces commandes dans le dossier où votre distribution deMsql-Mysql-modulesse situe :

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

shell> make install shell> make perl

Installer MySQL

Finalement, vous devez installer ce nouveau Perl. Une fois de plus, l'affichage demake perlvous indiquera la commande à utiliser.