0 votos

¿Me impide El Capitán hacer funcionar el módulo de Perl DBD::Oracle?

Permítanme empezar diciendo que no soy tradicionalmente un usuario de Mac. Todavía estoy tratando de hacer la transición desde Gentoo, donde compilar todo desde el código fuente era el estado por defecto, y el sistema no trataba activamente de evitar que hiciera cosas "peligrosas".

Tengo una máquina nueva con 10.11. He conseguido sqlplus 11.2.0.4, y puedo conectarme a un servidor remoto de Oracle con él. Ahora quiero usar DBD::Oracle para conectar en un Perl script. He podido conseguir DBD::Oracle para compilar/instalar pasando manualmente una versión a Makefile.pl en lugar de utilizar CPAN (o, más concretamente, cpanm ):

perl Makefile.pl -V 11.2
make
make install

Sin embargo, cuando ejecuto el script utilizando el Perl por defecto (5.18.2 ubicado en /usr/bin/perl ), obtengo un error:

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

En caso de que el problema radique en el perl del sistema, he instalado perlbrew y luego instalé 5.22.0 en ~/perl5 . Usando el perlbrew Perl, obtengo un error diferente:

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

Lo he intentado:

  • bibliotecas Oracle de 32 y 64 bits
  • bibliotecas de enlace simbólico de la versión específica ( libclntsh.dylib.11.1 => libclntsh.dylib )
  • arreglar las rutas codificadas para /ade
  • crear una carpeta 'mesg' y hacerla escribible en $ORACLE_HOME
  • ajuste ORACLE_HOME , LD_LIBRARY_PATH , DYLD_LIBRARY_PATH y PATH para incluir /usr/local/oracle_client de /etc/profile , /etc/bashrc/ , ~/.bashrc y ~/.bash_profile

¿Hay algo más que pueda probar? ¿Qué me falta?

1voto

Bill Mollett Puntos 11

Estoy usando Mac OS X 10.11.3 El Capitan, perlbrew 1.74 instalado con cpanm & App::perlbrew/0.74 Perl revisión 5 versión 22 subversión 1 (instalado a través de perlbrew) DBI -- 1.631 DBD::Oracle VERSION: 1.74 Oracle InstantClient 11.2.0.4.0 instalado en /usr/local/lib/oracle/instantclient_11_2

Puedo confirmar que la única manera, hasta ahora, que he podido conseguir que DBD::Oracle funcione es desactivando el SIP ( http://osxdaily.com/2015/10/05/disable-rootless-system-integrity-protection-mac-os-x/ ). Cualquier otra forma que he probado da como resultado el error "failed: ERROR OCIEnvNlsCreate. Check ORACLE_HOME (Linux) env var ...".

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X