0 votes

El Capitan m'empêche-t-il de faire fonctionner le module Perl DBD::Oracle ?

Laissez-moi commencer par dire que je ne suis pas traditionnellement un utilisateur de Mac. J'essaie toujours de faire la transition depuis Gentoo, où la compilation de tout à partir des sources était l'état par défaut, et où le système n'essayait pas activement de m'empêcher de faire des choses "dangereuses".

J'ai une nouvelle machine fonctionnant sous la 10.11. J'ai obtenu sqlplus 11.2.0.4 en cours d'exécution, et je suis en mesure de me connecter à un serveur Oracle distant avec celui-ci. Je souhaite maintenant utiliser DBD::Oracle pour se connecter dans un script Perl. J'ai pu obtenir DBD::Oracle à compiler/installer en passant manuellement une version à Makefile.pl plutôt que d'utiliser le CPAN (ou, plus précisément, cpanm ) :

perl Makefile.pl -V 11.2
make
make install

Cependant, lorsque j'exécute le script en utilisant le Perl par défaut (5.18.2 situé à l'adresse suivante /usr/bin/perl ), je reçois une erreur :

ERROR OCIEnvNlsCreate. Check ORACLE_HOME (Linux) env var  or PATH (Windows) and or NLS settings, permissions, etc.

Au cas où le problème se situe au niveau du système perl, j'ai installé perlbrew et a ensuite installé 5.22.0 dans ~/perl5 . En utilisant le perlbrew Perl, j'obtiens une erreur différente :

dyld: lazy symbol binding failed: Symbol not found: _OCIAttrSet
  Referenced from: /Users/jrittenh/perl5/perlbrew/perls/perl-5.22.0/lib/site_perl/5.22.0/darwin-2level/auto/DBD/Oracle/Oracle.bundle
  Expected in: dynamic lookup

dyld: Symbol not found: _OCIAttrSet
  Referenced from: /Users/jrittenh/perl5/perlbrew/perls/perl-5.22.0/lib/site_perl/5.22.0/darwin-2level/auto/DBD/Oracle/Oracle.bundle
  Expected in: dynamic lookup

Trace/BPT trap: 5

J'ai essayé :

  • les bibliothèques Oracle 32 bits et 64 bits
  • la mise en place de bibliothèques symétriques à partir de la version spécifique ( libclntsh.dylib.11.1 => libclntsh.dylib )
  • correction des chemins codés en dur vers /ade
  • en créant un dossier 'mesg' et en le rendant accessible en écriture en $ORACLE_HOME
  • paramètre ORACLE_HOME , LD_LIBRARY_PATH , DYLD_LIBRARY_PATH et PATH d'inclure /usr/local/oracle_client de /etc/profile , /etc/bashrc/ , ~/.bashrc et ~/.bash_profile

Y a-t-il quelque chose d'autre que je puisse essayer ? Qu'est-ce qui me manque ?

1voto

Bill Mollett Points 11

J'utilise Mac OS X 10.11.3 El Capitan, perlbrew 1.74 installé avec cpanm & App::perlbrew/0.74 Perl révision 5 version 22 subversion 1 (installé via perlbrew) DBI: : 1.631 DBD::Oracle VERSION : 1.74 Oracle InstantClient 11.2.0.4.0 installé dans /usr/local/lib/oracle/instantclient_11_2

Je peux confirmer que la seule façon, jusqu'à présent, dont j'ai pu faire fonctionner DBD::Oracle est de désactiver SIP ( http://osxdaily.com/2015/10/05/disable-rootless-system-integrity-protection-mac-os-x/ ). Toutes les autres méthodes que j'ai essayées aboutissent à l'erreur "failed : ERROR OCIEnvNlsCreate. Check ORACLE_HOME (Linux) env var ...".

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X