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:
Using perl Syntax Highlighting
my ($infversion, $vernum) = &get_esqlc_version($esqlprog);
print "Using $infversion from $ID\n";
# Check for 32-bit vs 64-bit mismatches
# Unix versions of ESQL/C use .UCx (and .HCx on old HP-UX) to indicate a
# 32-bit client, and .FCx to indicate a 64-bit client. On Windows, .TCx
# has indicated 32-bit clients.
die "Unexpected ESQL/C version number format $infversion"
unless $infversion =~ m/\d+\.\d+\.([A-Z])[A-Z].*$/;
my ($verletter) = $1;
my ($esql_bits) = 0;
$esql_bits = 32 if ($verletter eq 'U');
$esql_bits = 32 if ($verletter eq 'H');
$esql_bits = 64 if ($verletter eq 'F');
$esql_bits = 32 if ($verletter eq 'T');
die "Unrecognized ESQL/C 'bittiness' letter $verletter"
unless $esql_bits != 0;
my ($perl_bits) = 8 * $Config{longsize};
die "Unexpected number of bits for Perl longsize ($perl_bits)"
unless $perl_bits == 32 || $perl_bits == 64;
die "Your build will fail because Perl is a $perl_bits-bit version but ESQL/C is a $esql_bits-bit version\n"
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:
Using perl Syntax Highlighting
sub get_esqlc_version
{
my ($esql) = @_;
my ($infv, $vers);
open(ESQL, "$esql -V|") || die;
# Read all the input to avoid Broken Pipe messages, and to avoid
# problems with RedHat 9 wittering about the ESQL/C compiler being
# an "Incorrectly built binary which accesses errno, ...". Last
# credit for reporting the RedHat 9 problem.
while (<ESQL>)
{
$infv = $_ if (m%Informix.* Version%i);
}
die "Failed to read any Informix version from 'esql -V'\n"
unless defined $infv;
close ESQL;
chomp($infv);
$infv =~ s/\s+$//; # Delete trailing white space
$infv =~ s/\s+/ /g; # Replace white space with single blanks
$vers = $infv;
# JL 2002-11-06:
# CSDK 2.70 and earlier produces:
# INFORMIX-ESQL Version 9.51.UC1
# CSDK 2.80 (and later) produces:
# IBM Informix CSDK Version 2.80, IBM Informix-ESQL Version 9.52.UC1
# I4GL produces (note the extra spaces between Version and the number):
# IBM INFORMIX-4GL Version 7.31.UC3
# on 1999-07-25). The s/// expression below picks up the I4GL or
# ESQL/C version correctly from all three formats, relying on
# case-insensitivity, the '-', and a string of alphanumerics to
# identify the correct codewords prior to Version. Fortunately,
# the ESQL/C support code treats I4GL 7.31 the same as ESQL/C 9.x.
$vers =~ s/.*INFORMIX-\w+ Version\s+(\d+[.]\d+).*/$1/i;
die "Unexpected message from esql script -- $infv\n"
unless ($vers =~ /^\d+[.]\d+$/);
$vers =~ s/^([0-9])\./$1/;
return $infv, $vers;
}
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.