• Publicidad

Error instalación DBI::Informix

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 instalación DBI::Informix

Notapor Lor » 2009-12-26 20:02 @876

Estoy trabajando con Perl v5.10 y tengo problemas para instalar el DBD::Informix.

Instalé el DBI, pero como estoy trabajando con Informix, al querer instalar DBD::Informix me sale lo siguiente.

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
  CPAN.pm: Going to build J/JO/JOHNL/DBD-Informix-2008.0513.tar.gz

*** ExtUtils::AutoInstall version 0.63
*** Checking for dependencies...
[Core Features]
- DBI         ...loaded. (1.609 >= 1.38)
[High Resolution Timing]
- Time::HiRes ...loaded. (1.9719)
[POD Format Testing]
- Test::Pod   ...missing.
==> Auto-install the 1 optional module(s) from CPAN? [y] y
Dispatching deprecated method 'CPAN::Config::load' to CPAN::HandleConfig
*** Dependencies will be installed the next time you type 'make'.
*** ExtUtils::AutoInstall configuration finished.

Configuring IBM Informix Database Driver for Perl DBI Version 2008.0513 (2008-05-13) (aka DBD::Informix)
        You are using DBI version 1.609 and Perl version 5.010000
Remember to actually read the README file!

Perl:     /usr/bin/perl v5.010000 x86_64-linux-thread-multi dl_dlopen.xs
System:   linux x86-4.fedora.phx.redhat.com 2.6.18-128.1.6.el5 #1 smp tue mar 24 12:05:57 edt 2009 x86_64 x86_64 x86_64 gnulinux
Using INFORMIXDIR=/home/informix and ESQL/C compiler esql
Using IBM Informix CSDK Version 2.90, IBM Informix-ESQL Version 2.90.UC3 from /home/informix
Your build will fail because Perl is a 64-bit version but ESQL/C is a 32-bit version
Warning: No success on command[/usr/bin/perl Makefile.PL]
Warning (usually harmless): 'YAML' not installed, will not store persistent state
  JOHNL/DBD-Informix-2008.0513.tar.gz
  /usr/bin/perl Makefile.PL -- NOT OK
Running make test
  Make had some problems, won't test
Running make install
  Make had some problems, won't install
Could not read '/root/.cpan/build/DBD-Informix-2008.0513-eCIX0o/META.yml'. Falling back to other methods to determine prerequisites
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4



He tenido varios problemas de instalación con Perl v5.10, ¿cómo hago para volver al 5.8.8?

¡¡¡¡¡Muchas gracias por todo!!!!! :D
Lor
Perlero nuevo
Perlero nuevo
 
Mensajes: 187
Registrado: 2005-04-28 05:47 @282

Publicidad

Re: Error instalación DBI::Informix

Notapor explorer » 2009-12-26 20:35 @899

No es un problema de Perl... fíjate que dice:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Your build will fail because Perl is a 64-bit version but ESQL/C is a 32-bit version
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Estás usando una versión Perl de 64 bits, mientras que la librería ESQL/C es de la versión 32 bits.

Para instalar un Perl anterior deberás usar el gestor de paquetes del sistema, algo fácil de usar como veo que estás en Fedora Linux.

Ahora bien, la recomendación no es usar una versión anterior, pues el sistema operativo se puede volver loco (hay muchos sistemas dentro de los Linux que dependen de Perl).

Una buena opción sería instalar la versión anterior de Perl en un directorio particular, que no interfiera con el Perl del resto del sistema.

Es algo complicado... se puede hacer, pero es laborioso.

Recuerda además que debes leer el fichero README, donde habla algo de tener creada una base de datos.

Yo creo que intentaría antes buscar el paquete perl-DBD-Informix para Fedora, ya compilado. O mirar en el web de IBM :)
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14475
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Error instalación DBI::Informix

Notapor Lor » 2009-12-27 05:25 @267

¡¡¡ Gracias Explorer !!! No logro encontrar el módulo DBI::Informix 64. ¿¿ Puedo yo misma compilarlo ?? Si fuese así ¿¿ me puedes indicar cómo debo hacerlo ??

¡¡¡Muchas gracias y felicidades!!! :D
Lor
Perlero nuevo
Perlero nuevo
 
Mensajes: 187
Registrado: 2005-04-28 05:47 @282

Re: Error instalación DBI::Informix

Notapor explorer » 2009-12-27 10:12 @467

Pues no, no sé nada de ese más de lo que Google es capaz de entregarme.

Humm... parece que poner a andar este motor de base de datos es más complicado de lo que parece... ¿no habéis pensado en contratar asistencia a IBM? Es caro, pero es lo más efectivo en el caso de que sigáis queriendo usar Informix.

Por lo que he podido ver...

El Makefile.PL tiene esta parte de código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my ($infversion, $vernum) = &get_esqlc_version($esqlprog);
  2. print "Using $infversion from $ID\n";
  3.  
  4. # Check for 32-bit vs 64-bit mismatches
  5. # Unix versions of ESQL/C use .UCx (and .HCx on old HP-UX) to indicate a
  6. # 32-bit client, and .FCx to indicate a 64-bit client.  On Windows, .TCx
  7. # has indicated 32-bit clients.
  8. die "Unexpected ESQL/C version number format $infversion"
  9.     unless $infversion =~ m/\d+\.\d+\.([A-Z])[A-Z].*$/;
  10. my ($verletter) = $1;
  11. my ($esql_bits) = 0;
  12. $esql_bits = 32 if ($verletter eq 'U');
  13. $esql_bits = 32 if ($verletter eq 'H');
  14. $esql_bits = 64 if ($verletter eq 'F');
  15. $esql_bits = 32 if ($verletter eq 'T');
  16. die "Unrecognized ESQL/C 'bittiness' letter $verletter"
  17.     unless $esql_bits != 0;
  18. my ($perl_bits) = 8 * $Config{longsize};
  19. die "Unexpected number of bits for Perl longsize ($perl_bits)"
  20.     unless $perl_bits == 32 || $perl_bits == 64;
  21. die "Your build will fail because Perl is a $perl_bits-bit version but ESQL/C is a $esql_bits-bit version\n"
  22.     unless $perl_bits == $esql_bits;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
y es justamente la última de estas líneas la que falla, mostrando el mensaje de que no coincide la arquitectura de Perl con la de ESQL/C.

El número de bits de la arquitectura de ESQL/C se saca del valor de la letra indicada en el número de versión, que para 64 bits debería ser una 'F', pero en tu caso, 2.90.UC3, es una 'U'.

La información del número de versión, $infversion, la extrae de la llamada a la función get_esqlc_version(), que está definida en el módulo DBD::Informix::Configure:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.         sub get_esqlc_version
  2.         {
  3.                 my ($esql) = @_;
  4.                 my ($infv, $vers);
  5.  
  6.                 open(ESQL, "$esql -V|") || die;
  7.                 # Read all the input to avoid Broken Pipe messages, and to avoid
  8.                 # problems with RedHat 9 wittering about the ESQL/C compiler being
  9.                 # an "Incorrectly built binary which accesses errno, ...".  Last
  10.                 # version line wins!  Jay Hannah <[email protected]> gets the
  11.                 # credit for reporting the RedHat 9 problem.
  12.                 while (<ESQL>)
  13.                 {
  14.                         $infv = $_ if (m%Informix.* Version%i);
  15.                 }
  16.                 die "Failed to read any Informix version from 'esql -V'\n"
  17.                         unless defined $infv;
  18.                 close ESQL;
  19.  
  20.                 chomp($infv);
  21.                 $infv =~ s/\s+$//;      # Delete trailing white space
  22.                 $infv =~ s/\s+/ /g;     # Replace white space with single blanks
  23.                 $vers = $infv;
  24.                 # JL 2002-11-06:
  25.                 # CSDK 2.70 and earlier produces:
  26.                 #     INFORMIX-ESQL Version 9.51.UC1  
  27.                 # CSDK 2.80 (and later) produces:
  28.                 #     IBM Informix CSDK Version 2.80, IBM Informix-ESQL Version 9.52.UC1  
  29.                 # I4GL produces (note the extra spaces between Version and the number):
  30.                 #     IBM INFORMIX-4GL Version   7.31.UC3  
  31.                 # (I4GL issue reported by Roderick Schertler <[email protected]>
  32.                 # on 1999-07-25).  The s/// expression below picks up the I4GL or
  33.                 # ESQL/C version correctly from all three formats, relying on
  34.                 # case-insensitivity, the '-', and a string of alphanumerics to
  35.                 # identify the correct codewords prior to Version.  Fortunately,
  36.                 # the ESQL/C support code treats I4GL 7.31 the same as ESQL/C 9.x.
  37.                 $vers =~ s/.*INFORMIX-\w+ Version\s+(\d+[.]\d+).*/$1/i;
  38.                 die "Unexpected message from esql script -- $infv\n"
  39.                         unless ($vers =~ /^\d+[.]\d+$/);
  40.                 $vers =~ s/^([0-9])\./$1/;
  41.  
  42.                 return $infv, $vers;
  43.         }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
que, como ves, lo que hace es ejecutar $esql -V, que es el nombre que el módulo ha deducido como el nombre del ejecutable, en el sistema, que es el compilador de ESQL/C. En Linux, es esql.

De todo esto, deduce (por una letra :)), que es una versión de 32 bits.

Necesitas: o bien tener un Perl de 32 bits o una nueva versión de ESQL/C para 64 bits.
e
Debes leer las notas de creación de la librería ESQL/C para 64 bits (busca por el enlace Informix ESQL/C 2.90.FC4R1 (Linux Intel 64bit) en caso de que esa sea tu arquitectura).

Lo que no sé es dónde encontrar esa librería ESQL/C. Según parece, tendrás que ponerte en contacto con vuestro comercial de IBM para conseguir una licencia de ESQL/C para 64 bits.

Un buen sitio para encontrar información es en Informix-Zone, donde tienen una pequeña sección dedicada a usar Informix desde diversos lenguajes, entre ellos, con Perl. Por ejemplo, aquí hay un mensaje de cómo tener un sistema DBD::Informix 64 bits en el Mac OSX.

Quizás la solución más rápida y sencilla sea montar un ordenador nuevo (300€) donde instalar un Linux Fedora 32 bits (fíjate que no nombro Perl: se supone que si instalas un Linux de 32 bits, el Perl (y el resto de ejecutables) estarán también en 32 bits). Y luego instalas tu Informix+ESQL/C de 32 bits. Y luego, el DBD::Informix.

Yo... estoy casi convencido que IBM debería tener algo ya hecho para 64 bits. Bájate ese SDK y mira a ver si trae el ESQL/C para 64 bits.

Que la suerte te acompañe.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14475
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 3 invitados