Quelqu'un pourrait-il me guider pour installer le module Perl DBD::Oracle
?
Voici ce que j'ai fait jusqu'à présent:
$Oracle_HOME
et $LD_LIBRARY_PATH
correctsAlors quand je fais Perl Makefile.pl
il échoue avec l'erreur suivante:
I'm having trouble finding your Oracle version number... trying harder
WARNING: I could not determine Oracle client version so I'll just
default to version 8.0.0.0. Some features of DBD::Oracle may not work.
Oracle version based logic in Makefile.PL may produce erroneous results.
You can use "Perl Makefile.PL -V X.Y.Z" to specify a your client version.
Oracle version 8.0.0.0 (8.0)
DBD::Oracle no longer supports Oracle client versions before 9.2
Try a version before 1.25 for 9 and 1.18 for 8! at Makefile.PL line 271.
La version client instantanée: 11.1.0
DBD::Oracle
est 1.44Si vous avez installé avec succès le client instantané Oracle, pouvez-vous me laisser savoir ce qui me manque?
Est-il possible d'installer DBD::Oracle
sans utiliser le client instantané Oracle?
$ yum install Perl-DBI
)Installez manuellement ci-dessous trois RPM pour le client instantané Oracle (à partir de Téléchargements de client instantanée pour Linux x86-64 )
Oracle-instantclient11.2-basic-11.2.0.3.0-1
Oracle-instantclient11.2-devel-11.2.0.3.0-1
Oracle-instantclient11.2-sqlplus-11.2.0.3.0-1
J'utilise une machine Linux 64 bits, sélectionnez donc vos noms de fichiers RPM en conséquence.
définir ci-dessous les variables:
LD_LIBRARY_PATH=/usr/lib/Oracle/11.2/client64/lib
Oracle_HOME=/usr/lib/Oracle/11.2/client64
Les utilisateurs de MacOS auront besoin de:
DYLD_LIBRARY_PATH=/usr/lib/Oracle/11.2/client64/
Ajoutez également Oracle_HOME
à votre variable PATH
.
télécharger DBD :: Oracle à partir de CPAN
décompressez le module et exécutez les commandes ci-dessous dans l'ordre indiqué:
Perl Makefile.PL
make
make install
TERMINÉ !!!
Les problèmes que j'avais rencontrés étaient dus au mauvais LD_LIBRARY_PATH
. Je l'avais mis à /usr/lib/Oracle/11.2/client64
alors que la valeur correcte est /usr/lib/Oracle/11.2/client64/lib
.
Ce fut certainement un excellent apprentissage pour un débutant comme moi.
vous pouvez également lire mon article Comment installer DBD :: Oracle qui contient toutes les étapes nécessaires à l'installation du module DBD :: Oracle CPAN, qui n'est pas une installation simple. Le but est de réduire les maux de tête et de les transformer en processus reproductible.
Voici ce que j'ai fait sur CentOS 7.2 en utilisant des packages yum et CPAN. Cela suppose que vous utilisez Oracle version 12.1, mais j'imagine que la plupart des versions fonctionneront de cette façon.
Installer Oracle Instant Client
yum install Oracle-instantclient12.1-basic-12.1.0.2.0-1 Oracle-instantclient12.1-devel-12.1.0.2.0-1 Oracle-instantclient12.1-sqlplus-12.1.0.2.0-1
Copier la démo pour créer des fichiers
L'installation s'attend à ce que le fichier * .mk se trouve dans /usr/share/Oracle/12.1/client64 mais l'installation du package yum les place dans /usr/share/Oracle/12.1/client64/demo.
Sudo cp /usr/share/Oracle/12.1/client64/demo/* /usr/share/Oracle/12.1/client64
Modifier .bashrc
Ajoutez les lignes suivantes à votre ~/.bashrc
export Oracle_HOME=/usr/lib/Oracle/12.1/client64
export LD_LIBRARY_PATH=/usr/lib/Oracle/12.1/client64/lib
export PATH=$Oracle_HOME:$PATH
Maintenant, source le fichier
source ~/.bashrc
Mise à jour des réseaux CPAN et DBI
Mettre à jour CPAN et DBI à la dernière
cpan> install CPAN
cpan> reload cpan
cpan> install DBI
Installer DBD :: Oracle
cpan> install DBD::Oracle
Un petit ajout à la réponse slayedbylucifer. J'ai eu le même problème que mentionné dans la question. J'ai effectué toutes les étapes décrites par slayedbylucifer. Mais j'ai toujours le problème comme mentionné ici :
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /opt/Oracle/app/Oracle/product/11.2.0/client_1/lib//libclntsh.so when searching for -lclntsh
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: cannot find -lclntsh
J'ai donc créé le lien symbolique suivant:
ln -s /opt/Oracle/app/Oracle/product/<YOUR_Oracle_VERSION>/client_1/lib/libclntsh.so $Oracle_HOME/libclntsh.so*
Ensuite, l'erreur ci-dessus (impossible de trouver -lclntsh) a été corrigée. L'exécution de la commande make s'est déroulée sans erreur.
Le seul problème que j'ai encore, c'est que je ne comprends pas pourquoi ce lien symbolique est nécessaire.