[Perl] Problemas con DBD::mysql en Solaris 8

Juan Pablo Rosas Durán hypatia@att.net.mx
Mon, 12 Aug 2002 10:59:06 -0500


Estimados Perleros: 

En esta ocasión les solicito encarecidamente su ayuda, con un detalle
de ínstalación de una aplicación hecha en Perl y MySQL en Linux y que
debe funcionar en Solaris.

La aplicación fue probada, a manera de piloto, en una Sun Blade 1000
con Solaris 8 sin ningún problema, pero al tratar de instalar el
modulo DBD-mysql en una E10000 nos presenta serios problemas.

La E10000 se proporciona con el Apache, MySQL, el compilador GCC y
las utilerias GNU en las (supuestamente) mismas condiciones que la
Blade. No tengo el password de root y siempre que debo de trabajar en
la E10000 tengo que cambiarme a otras instalaciones donde hay un
chaperon cuidando todo lo que hago (paranoia del usuario).

Tengo la sensación de que algo esta mal instalado en la 10000 que no
permite compilar adecuadamente el DBD-Mysql ¿Ustedes me pueden dar un
norte al respecto?

Por mi parte, baje el fuente de Perl 5.6.1, lo compile e instale sin
problemas (al igual que en la Blade).

Los detalles del problema vienen a continuación, y les agradezco de
antemano la ayuda que me puedan proporcionar. 


DESCRIPCIÓN DEL PROBLEMA:

Al momento de hacer el "make test" sobre el paquete
DBD-mysql-2.1017, se producen una serie de errores del siquiente tipo: 

    t/00base............install_driver(mysql) failed: Can't load
    'blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql:
    ld.so.1: /usr/bin/perl: fatal: relocation error: file
    blib/arch/auto/DBD/mysql/mysql.so: symbol
    mysql_real_escape_string: referenced symbol not found at
    /usr/local/lib/perl5/5.6.1/sun4-solaris/DynaLoader.pm

Impidiendo con esto instalar correctamente dicho modulo. 

ENTORNO:

Solaris 8 (5.8) en equipo Sun ultra-enterprise 10000
Compilador GCC (2.95) y utilerias GNU instaladas. 
Perl 5.6.1 (bajado y compilado)
MySQL 3.23.51 (binario de sunfreeware)

ANTECEDENTES: 

1) Con anterioridad se habían realizado pruebas piloto en un equipo
   Sun Blade, Solaris 8, con compilador GCC (2.95) y utilerias GNU, perl
   5.6.1 y MySQL 3.23.43, sin ningún problema.

2) Antes de la compilación de DBD-Mysql, se compila, prueba e instala
   sin problemas el modulo DBI versión 1.30

3) Los comandos utilizados y los mensajes de error correspondientes
   son los que siguen:

# perl Makefile.PL --cflags=-I/usr/local/sil/usr/local/mysql/include/
--libs=-L/usr/local/sil/usr/local/mysql/lib/ -lmysqlclient -lz
--testdb=mysql --testuser=yyyy --testpassword=xxxx
--testhost=localhost

# make
gcc -c -I/usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris/auto/DBI -I/usr/local/sil/usr/local/mysql/include/
-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
-O -DVERSION=\"2.1017\" -DXS_VERSION=\"2.1017\" -fPIC -I/usr/local/lib/perl5/5.6.1/sun4-solaris/CORE
 dbdimp.c
gcc -c -I/usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris/auto/DBI -I/usr/local/sil/usr/local/mysql/include/
-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
-O -DVERSION=\"2.1017\" -DXS_VERSION=\"2.1017\" -fPIC -I/usr/local/lib/perl5/5.6.1/sun4-solaris/CORE
 mysql.c
Running Mkbootstrap for DBD::mysql ()
chmod 644 mysql.bs
rm -f blib/arch/auto/DBD/mysql/mysql.so
LD_RUN_PATH="" /usr/bin/perl myld gcc -G -L/usr/local/lib dbdimp.o mysql.o
 -o blib/arch/auto/DBD/mysql/mysql.so
chmod 755 blib/arch/auto/DBD/mysql/mysql.so
cp mysql.bs blib/arch/auto/DBD/mysql/mysql.bs
chmod 644 blib/arch/auto/DBD/mysql/mysql.bs
Manifying blib/man3/DBD::mysql.3
Manifying blib/man3/DBD::mysql::INSTALL.3
Manifying blib/man3/Bundle::DBD::mysql.3
Manifying blib/man3/Mysql.3


# make test
PERL_DL_NONLAZY=1 /usr/bin/perl -Iblib/arch -Iblib/lib -I/usr/local/lib/perl5/5.6.1/sun4-solaris
-I/usr/local/lib/perl5/5.6.1 -e 'use Test::Harness qw(&runtests $verbose);
$verbose=0; runtests @ARGV;' t/*.t
t/00base............install_driver(mysql) failed: Can't load 'blib/arch/auto/DBD/mysql/mysql.so'
for module DBD::mysql: ld.so.1: /usr/bin/perl: fatal: relocation error:
file blib/arch/auto/DBD/mysql/mysql.so: symbol mysql_real_escape_string:
referenced symbol not found at /usr/local/lib/perl5/5.6.1/sun4-solaris/DynaLoader.pm
line 206.
 at (eval 1) line 3
Compilation failed in require at (eval 1) line 3.
Perhaps a required shared library or dll isn't installed where expected
 at t/00base.t line 38
t/00base............dubious
        Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 4-5
        Failed 2/5 tests, 60.00% okay
t/10dsnlist.........install_driver(mysql) failed: Can't load 'blib/arch/auto/DBD/mysql/mysql.so'
for module DBD::mysql: ld.so.1: /usr/bin/perl: fatal: relocation error:
file blib/arch/auto/DBD/mysql/mysql.so: symbol mysql_real_escape_string:
referenced symbol not found at /usr/local/lib/perl5/5.6.1/sun4-solaris/DynaLoader.pm
line 206.
 at (eval 1) line 3
Compilation failed in require at (eval 1) line 3.
Perhaps a required shared library or dll isn't installed where expected
 at t/10dsnlist.t line 45
t/10dsnlist.........dubious
        Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 1-3
        Failed 3/3 tests, 0.00% okay
t/20createdrop......install_driver(mysql) failed: Can't load 'blib/arch/auto/DBD/mysql/mysql.so'
for module DBD::mysql: ld.so.1: /usr/bin/perl: fatal: relocation error:
file blib/arch/auto/DBD/mysql/mysql.so: symbol mysql_real_escape_string:
referenced symbol not found at /usr/local/lib/perl5/5.6.1/sun4-solaris/DynaLoader.pm
line 206.
 at (eval 1) line 3
Compilation failed in require at (eval 1) line 3.
Perhaps a required shared library or dll isn't installed where expected
 at t/20createdrop.t line 45
t/20createdrop......dubious
        Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 1-5
        Failed 5/5 tests, 0.00% okay
t/30insertfetch.....install_driver(mysql) failed: Can't load 'blib/arch/auto/DBD/mysql/mysql.so'
for module DBD::mysql: ld.so.1: /usr/bin/perl: fatal: relocation error:
file blib/arch/auto/DBD/mysql/mysql.so: symbol mysql_real_escape_string:
referenced symbol not found at /usr/local/lib/perl5/5.6.1/sun4-solaris/DynaLoader.pm
line 206.
 at (eval 1) line 3
Compilation failed in require at (eval 1) line 3.
Perhaps a required shared library or dll isn't installed where expected
 at t/30insertfetch.t line 48
t/30insertfetch.....dubious
        Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 1-11
        Failed 11/11 tests, 0.00% okay
t/40bindparam.......install_driver(mysql) failed: Can't load 'blib/arch/auto/DBD/mysql/mysql.so'
for module DBD::mysql: ld.so.1: /usr/bin/perl: fatal: relocation error:
file blib/arch/auto/DBD/mysql/mysql.so: symbol mysql_real_escape_string:
referenced symbol not found at /usr/local/lib/perl5/5.6.1/sun4-solaris/DynaLoader.pm
line 206.
 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/40bindparam.t line 64
t/40bindparam.......dubious
        Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 1-28
        Failed 28/28 tests, 0.00% okay

--
Juan Pablo Rosas Durán