Página 3 de 3

NotaPublicado: 2009-03-02 16:20 @722
por piero66
mira, el "make test" arroja esto...

Código: Seleccionar todo
make[1]: se ingresa al directorio `/home/inst1/sqllib/DBD-DB2-1.6/Constants'
make[1]: se sale del directorio `/home/inst1/sqllib/DBD-DB2-1.6/Constants'
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/base....install_driver(DB2) failed: Can't load '/home/inst1/sqllib/DBD-DB2-1.6/blib/arch/auto/DBD/DB2/DB2.so' for module DBD::DB2: libdb2.so.1: no se puede abrir el fichero del objeto compartido: No existe el fichero o el directorio at /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/DynaLoader.pm line 230.
 at (eval 3) line 3
Compilation failed in require at (eval 3) line 3.
Perhaps a required shared library or dll isn't installed where expected
 at t/base.t line 16
t/base....dubious
        Test returned status 2 (wstat 512, 0x200)
DIED. FAILED tests 4-5
        Failed 2/5 tests, 60.00% okay
t/main....ok
Failed Test Stat Wstat Total Fail  Failed  List of Failed
-------------------------------------------------------------------------------
t/base.t       2   512     5    4  80.00%  4-5
Failed 1/2 test scripts, 50.00% okay. 2/6 subtests failed, 66.67% okay.
make: *** [test_dynamic] Error 255


el "make install" arroja este mensaje:

Código: Seleccionar todo
make[1]: se ingresa al directorio `/home/inst1/sqllib/DBD-DB2-1.6/Constants'
make[1]: se sale del directorio `/home/inst1/sqllib/DBD-DB2-1.6/Constants'
Manifying blib/man3/Bundle::DBD::DB2.3pm
Manifying blib/man3/DBD::DB2.3pm
Installing /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/DBD/DB2/DB2.so
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Writing /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/DBD/DB2/.packlist
Appending installation info to /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/perllocal.pod


mira, a fin de cuentas no me ejecuta mi archivo que es lo que realmente me interesa. El error es el siguiente: (o mensajes)

Código: Seleccionar todo
Can't load '/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/DBD/DB2/DB2.so' for module DBD::DB2: libdb2.so.1: no se puede abrir el fichero del objeto compartido: No existe el fichero o el directorio at /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/DynaLoader.pm line 230.
 at dbddb2.pl line 4
Compilation failed in require at dbddb2.pl line 4.
BEGIN failed--compilation aborted at dbddb2.pl line 4.


y el archivo es este:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use DBI;
 use DBD::DB2;

my $string = "dbi:DB2:DATABASE=ICMSDSDB; HOSTNAME=192.1.1.1; PORT=50001; PROTOCOL=TCPIP; UID=icmadmin; PWD=*******;";
my $dbh = DBI->connect($string, icmadmin, ******) || die "Connection failed with error: $DBI::errstr";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

NotaPublicado: 2009-03-02 16:32 @730
por explorer
Creo que debes usar el export... :)

Actualización: ¿Seguro que en /home/inst1/sqllib/DBD-DB2-1.6/blib/arch/auto/DBD/DB2/ hay un fichero llamado DB2.so? Según el primer mensaje, sí. Entonces, no entiendo porqué falla el test.

NotaPublicado: 2009-03-02 16:41 @736
por explorer
Mira a ver que tengas instalado en el sistema el fichero libdb2.so.1, que es la librería que el módulo está intentando leer.

Debería haber sido instalado con el DB2.

NotaPublicado: 2009-03-02 17:02 @751
por piero66
o sea, ¿debo de hacer más de un export...?

Mira los pasos que ejecuto son estos:

Código: Seleccionar todo
export DB2_HOME=/opt/ibm/db2/V9.1
perl Makefile.PL
make
make test
make install


Busqué el archivo... y está en las siguientes rutas:
Código: Seleccionar todo
/opt/ibm/db2/V9.1/lib64/libdb2.so.1
/opt/ibm/db2/V9.1/lib32/libdb2.so.1


No sé si fallé por alguna situación y no pueda copiar este archivo a la ubicación donde están las librerías Perl y tenga que hacerlo la instalación.

/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/

Digo ahora ya no me queda claro si solo es un export, o hay que aplicar un export antes de cada ejecución de comandos (make, make test, etc) de instalación, pero en la anterior instalación solo fue una vez la que lo hice... digo lo único que ha cambiado es que es otro sistema operativo, o no sé, tal vez me falta otra librería que en el anterior servidor ya tenía... no sé... :cry:

NotaPublicado: 2009-03-02 17:27 @769
por explorer
No. El export está bien hecho.

El problema está en la instalación de DB2: no ha terminado de colocar la librería libdb2.so.1 en un directorio público del sistema (como por ejemplo /lib, /usr/lib, /usr/lib64, etc, etc.) Y por eso DBD::DB2 no lo encuentra.

Hay tres opciones. Cualquiera te vale.
1.- Vuelve a comprobar la instalación de DB2, y mira a ver que no falte un último paso para colocar ese fichero. Si es así, ejecútalo.
2.- Copiar el fichero (lib64/libdb2.so.1) a /usr/lib64, por ejemplo, y probar.
3.- Editar el fichero /etc/ld.so.conf y añadir allí la ruta /opt/ibm/db2/V9.1/lib64/ y ejecutar luego /sbin/ldconfig para que el sistema rehaga los enlaces a las librerías.

Luego, para comprobar que está bien instalado, prueba con
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -MDBD::DB2 -e 1
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Si no sale nada, todo está bien.

NotaPublicado: 2009-03-03 09:52 @453
por piero66
Excelente, explorer... calé esta opción.

3.- Editar el fichero /etc/ld.so.conf y añadir allí la ruta /opt/ibm/db2/V9.1/lib64/ y ejecutar luego /sbin/ldconfig para que el sistema rehaga los enlaces a las librerías.


y todo OK...

Muchas gracias.