• Publicidad

Error, no encuentra un loadable object de un módulo

Aquí encontrarás todo lo que sea específicamente acerca de módulos de Perl. Ya sea que estás compartiendo tu módulo, un manual o simplemente tienes una duda acerca de alguno.

Error, no encuentra un loadable object de un módulo

Notapor luiescco » 2010-02-25 12:16 @552

Hola, soy nuevo en el foro y escribo porque estoy tratando de conectar la herramienta Understand For C con Perl.

Actualmente esta herramienta tiene una versión light de Perl instalada para poder crear scripts y extraer información, y un módulo pm.

Ellos dice que se puede hacer un setenv o agregarla con use lib "" en el código y listo, ya ese módulo quedaría listo para ser utilizado por una instalación FULL de Perl.

Seguí esos pasos y, perfecto, encontró la librería pero los objetos dentro de la librería no los puede encontrar.

El error que me da es
Can't locate loadable object for module Understand::Api in @INC

¿Me podrían ayudar a resolverlo?

Saludos,
luiescco
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2010-02-25 12:08 @547

Publicidad

Re: Error, no encuentra un loadable object de un módulo

Notapor explorer » 2010-02-25 14:26 @643

Bienvenido a los foros de Perl en Español, luiescco.

Yo creo que... siendo un producto de pago, deberías antes preguntarles a ellos, aunque sospecho de que el problema está en que el módulo pm hace referencia a una librería .so o .dll, que no es capaz de encontrar.

Fíjate cómo están instalados los ficheros .so o .dll en tu distribución Perl. Verás que están en carpetas auto/ que siguen la misma jerarquía que los módulos normales. Lo que no me encaja es que digas que solo viene con un fichero pm.

Según su página, lo tienen para Perl v5.10.0, pero que no garantizan su funcionamiento para versiones anteriores.

Me he bajado la versión para Linux y veo que dentro de bin/pc-linux_elf hay un perl v5.10.0 llamado maintain_uperl, que tiene definidos en su @INC los directorios
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
    .
    /home/explorer/scitools/bin/pc-linux_elf/Perl/STI/Maintain/
    /home/explorer/scitools/bin/pc-linux_elf/Perl/
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Eso quiere decir que necesita, al menos, esos dos directorios, aunque en su página solo comentan el primero.

Lo dicho, no veo la librería que comentan.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Error, no encuentra un loadable object de un módulo

Notapor luiescco » 2010-02-25 14:37 @651

Gracias por la respuesta.

De hecho yo incluyo esas dos rutas como parte de PERLLIB pero aun así no sé por qué no me la reconoce bien.

Estoy pensando que tal vez puedan ser permisos. ¿Tu qué opinas?
luiescco
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2010-02-25 12:08 @547

Re: Error, no encuentra un loadable object de un módulo

Notapor explorer » 2010-02-25 15:04 @669

Ya encontré el fallo...

Este es el contenido del directorio bin/:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
explorer@casa:~/scitools/bin/pc-linux_elf> ll
total 74560
-rwxr-xr-x  1 explorer users       82 feb 18 10:07 und
-rwxr-xr-x  1 explorer users 10782740 feb 18 10:43 maintain_uperl.bin
-rwxr-xr-x  1 explorer users       82 feb 18 10:43 maintain_uperl
-rwxr-xr-x  1 explorer users       82 feb 18 11:02 understand
-rwxr-xr-x  1 explorer users   478832 feb 18 11:06 almtest
-rwxr-xr-x  1 explorer users  3664588 feb 18 11:06 libudb_api.so
-rwxr-xr-x  1 explorer users   779608 feb 18 11:06 libQtNetwork.so.4
-rwxr-xr-x  1 explorer users   487024 feb 18 11:06 almhostid
-rwxr-xr-x  1 explorer users   482928 feb 18 11:06 almstatus
-rwxr-xr-x  1 explorer users   478832 feb 18 11:07 almfree
-rwxr-xr-x  1 explorer users   478844 feb 18 11:07 almd
-rwxr-xr-x  1 explorer users   583796 feb 18 11:07 libQtSql.so.4
-rwxr-xr-x  1 explorer users  9963060 feb 18 11:07 libQtGui.so.4
-rwxr-xr-x  1 explorer users  2182944 feb 18 11:07 libQtCore.so.4
-rwxr-xr-x  1 explorer users 32994720 feb 18 11:07 understand.bin
-rwxr-xr-x  1 explorer users   249364 feb 18 11:07 libQtXml.so.4
-rwxr-xr-x  1 explorer users 12556736 feb 18 11:07 und.bin
drwxr-xr-x  3 explorer users     4096 feb 25 19:27 ..
drwxrwxr-x 65 explorer users    12288 feb 25 19:27 Perl
drwxrwxr-x  2 explorer users     4096 feb 25 19:27 imageformats
drwxrwxr-x  2 explorer users     4096 feb 25 19:27 codecs
drwxr-xr-x  5 explorer users     4096 feb 25 19:27 .
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Si ejecutamos desde ese sitio, una comprobación de uso del módulo Understand.pm, con el perl de nuestro sistema, vemos que falla:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
explorer@casa:~/scitools/bin/pc-linux_elf> perl -IPerl/STI/Maintain -MUnderstand -e 1
Can't locate loadable object for module Understand::Api in @INC (@INC contains: Perl/STI/Maintain /usr/lib/perl5/5.8.8/i586-linux-thread-multi /usr/lib/perl5/5.8.8 /usr/lib/perl5/site_perl/5.8.8/i586-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl .) at -e line 0
Compilation failed in require.
BEGIN failed--compilation aborted.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


En cambio, si usamos el intérprete que nos dan, funciona:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
explorer@casa:~/scitools/bin/pc-linux_elf> maintain_uperl -IPerl/STI/Maintain -MUnderstand -e 1
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Es decir... el módulo Perl Understand.pm necesita del módulo Understand::Api. Pero ese módulo no está en ninguna parte más que compilado dentro del ejecutable perl que incluye esta herramienta: maintain_uperl.bin.

Si miramos por dentro ese binario, aparecen cadenas como esta:
boot_Understand__Api

y muchas más relativas a cómo trabajar con ese módulo y con el Understand::Api::object. Así que esos módulos están compilados con el intérprete perl, todos en el mismo fichero binario.

Así que yo no veo más solución que uses ese perl especial, en lugar del de la distribución que tengas instalada en el sistema. O mandarles un correo diciendo que no puedes poner en marcha lo que dice en su página de Perl Scripts, salvo que te manden la librería Understand::Api por separado, ya que, yo al menos, no la veo por ninguna parte excepto dentro del intérprete maintain_uperl.bin.

Quizás eso es lo que quieren decir, en su página: puedes usar una distribución completa de Perl, y el módulo Understand.pm, referenciado desde 'use lib' o PERLLIB5, pero lo que quizás dan por supuesto, es que siempre vas a necesitar ejecutar el maintain_uperl.bin en lugar del perl de la distribución.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Error, no encuentra un loadable object de un módulo

Notapor luiescco » 2010-02-25 16:12 @717

Muchísimas gracias por tu ayuda, de verdad, lo aprecio. Ahora te explico.

Yo traté de utilizar una versión de Perl más completa que la que trae Understand for C porque estoy utilizando DBI::ODBC con el controlador freeTDS para conectarme a una base de datos SLQ Server y alimentarla con la información que pueda extraer de ahí.

Pero el módulo DBI no viene en esa versión de Perl que usa Understand, ese es el gran problema que tengo ahorita.

¿Crees que se pueda hacer algo para conectarme con ese perl a esa misma DB?
luiescco
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2010-02-25 12:08 @547

Re: Error, no encuentra un loadable object de un módulo

Notapor explorer » 2010-02-25 18:03 @794

Podrías intentar sustituir el perl.exe de la distribución completa por el perl que el Understand trae.

Sería renombrar el perl.exe a otro nombre, y luego copiar allí el maintain_uperl.bin con el nombre perl.exe.

Bueno, mejor dicho... habría que ver si en Windows trae un fichero parecido al maintain_uperl, que es un script de 4 líneas que sirve para lanzar el maintain_uperl.bin. Su misión es ayudar al maintain_uperl.bin a que encuentre las librerías que residen en bin/.

Luego, con el juego de 'use lib', es fácil decir a los programas dónde están los módulos que queremos usar.

Todo depende un poco de la distribución que tengas instalada, tendrás que tocar y mover ficheros de un sitio para otro.

Resumen: debes sustituir el perl.exe normal por el que te han dado. Y éste debe ser capaz de encontrar tanto sus propios módulos y librerías como los de la distribución nueva. Quizás sea tan sencillo como tener la PERL5LIB bien actualizada.

El gran problema está en si ese perl compilado por ellos es compatible, de forma binaria, con las librerías DBI para acceder a las bases de datos.

Me temo que puede ser imposible resolverlo. Yo les mandaría un correo a ellos, ya que lo has pagado.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Módulos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados

cron