Perl DBD:: Instalación del módulo Oracle
cpan install dbi oracle (4)
¿Alguien podría guiarme sobre cómo instalar el módulo DBD::Oracle
Perl DBD::Oracle
?
Esto es lo que he hecho hasta ahora:
- Plataforma: RHEL 5.8 64 bit.
- Paquete Perl DBI instalado
- Cliente instantáneo de Oracle instalado para Linux de 64 bits (componente basi + sdk + sqlplus para el cliente instantáneo
- Han establecido los
$ORACLE_HOME
y$LD_LIBRARY_PATH
correctos Entonces cuando hago
perl Makefile.pl
falla con el siguiente error: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 versión de cliente instantáneo: 11.1.0
- La versión
DBD::Oracle
es 1.44
Si se ha instalado correctamente con el cliente instantáneo de Oracle, ¿podría, por favor, hacerme saber qué me falta?
¿Es posible instalar DBD::Oracle
sin usar el cliente instantáneo de Oracle?
Esto es lo que hice en CentOS 7.2 usando paquetes yum y CPAN. Esto supone que está utilizando la versión 12.1 de Oracle, pero me imagino que la mayoría de las versiones funcionarán de esta manera.
Instalar 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
Copia demo crea archivos
La instalación espera que el archivo * .mk esté en /usr/share/oracle/12.1/client64 pero la instalación del paquete yum los coloca en /usr/share/oracle/12.1/client64/demo.
sudo cp /usr/share/oracle/12.1/client64/demo/* /usr/share/oracle/12.1/client64
Modificar .bashrc
Agrega las siguientes líneas a tu ~ / .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
Ahora fuente el archivo
source ~/.bashrc
Actualizar CPAN y DBI
Actualice CPAN y DBI a la última
cpan> install CPAN
cpan> reload cpan
cpan> install DBI
Instala DBD :: Oracle
cpan> install DBD::Oracle
También puede leer mi artículo Cómo instalar DBD :: Oracle, que contiene todos los pasos necesarios para instalar el módulo DBD :: Oracle CPAN, que no es una instalación sencilla. El propósito es reducir el dolor de cabeza y convertirlo en un proceso repetible.
Una pequeña adición a la respuesta de matador de bylucifer. Tuve el mismo problema que el mencionado en la pregunta. He hecho todos los pasos descritos por slayedbylucifer. Pero todavía tengo el problema como se menciona here :
/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
Así que creé el siguiente enlace simbólico:
ln -s /opt/oracle/app/oracle/product/<YOUR_ORACLE_VERSION>/client_1/lib/libclntsh.so $ORACLE_HOME/libclntsh.so*
Después de ese paso, el error de arriba (no se puede encontrar -lclntsh) se solucionó. La ejecución del comando make fue sin errores.
El único problema que todavía tengo es que no entiendo por qué es necesario este enlace simbólico.
- Instale el módulo DBI de Perl (
$ yum install perl-DBI
) Instale manualmente debajo de tres RPM para el cliente instantáneo de Oracle (de Instant Client Downloads para 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
Estoy usando la caja de Linux de 64 bits, así que seleccione sus nombres de archivo RPM como corresponda.
Establecer debajo de las variables:
LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib ORACLE_HOME=/usr/lib/oracle/11.2/client64
Los usuarios de MacOS necesitarán:
DYLD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/
También agregue
ORACLE_HOME
a su variablePATH
.descargar DBD :: Oracle desde CPAN
Deshaga el módulo y ejecute los siguientes comandos en la secuencia dada:
perl Makefile.PL make make install
HECHO !!!
Los problemas que había enfrentado se debían a una LD_LIBRARY_PATH
incorrecta. Lo había establecido en /usr/lib/oracle/11.2/client64
mientras que el valor correcto es /usr/lib/oracle/11.2/client64/lib
.
Ciertamente, este fue un gran aprendizaje para un novato como yo.