2012-03-13 25 views
12

XML :: Parser no se puede construir en una caja Debian de 64 bits bastante reciente. Después de emitir cpan XML::Parser, CPAN falla con un montón de errores sobre Expat.c y Expat.xs:¿Cómo instalar XML :: Parser sin expat-devel?

[...] 
Expat.xs:2182: error: ‘CallbackVector’ has no member named ‘skip_until’ 
Expat.c: In function ‘XS_XML__Parser__Expat_Do_External_Parse’: 
Expat.c:2904: error: ‘XML_Parser’ undeclared (first use in this function) 
Expat.c:2904: error: expected ‘;’ before ‘parser’ 
Expat.xs:2194: error: ‘parser’ undeclared (first use in this function) 
make[1]: *** [Expat.o] Error 1 
make[1]: Leaving directory `/root/.cpan/build/XML-Parser-2.41-rpV6ok/Expat' 
make: *** [subdirs] Error 2 
    TODDR/XML-Parser-2.41.tar.gz 
    /usr/bin/make -- NOT OK 
Running make test 
    Can't test without successful make 
Running make install 
    Make had returned bad status, install seems impossible 

mensaje en el inicio de la producción explica que se necesita Expat-devel para la construcción.

Expat debe instalarse antes de compilar XML :: Parser y no puedo encontrarlo en los directorios de la librería estándar . Instale el paquete 'expat-devel' con su gestor de paquetes . Ver 'README'.

Pero Expat-devel no está en el repositorio de Debian.

¿Es posible superar esto sin necesidad de construir/instalar expat desde la fuente?

Respuesta

42

El paquete que desea instalar se llama libexpat1-dev. También puede simplemente instalar libxml-parser-perl a través de apt-get. O si realmente desea instalar a través de CPAN intente instalar primero las dependencias de los paquetes de Debian a través del apt-get build-dep libxml-parser-perl.

9

libexpat1-dev contiene tanto libexpat y expat.h, que son a la vez menciona en el mensaje así:

Si se instala de expatriados, pero en un directorio no estándar, a continuación, utilizar las siguientes opciones para fichero Makefile .PL:

EXPATLIBPATH = ... para establecer el directorio en el que encontrar libexpat

EXPATINCPATH = ... para establecer el directorio en el que encontrar expat.h

Instalación libexpat1-dev parece resolver el problema:

$ aptitude install libexpat1-dev 
5

Siempre existe el método manual - para construir/instalar expat desde la fuente. (Este ejemplo muestra la instalación en una ubicación alternativa para XAMPP | LAMPP)

Descarga desde: http://sourceforge.net/projects/expat/files/expat/

tar zxf /[where-ever]/expat-2.1.0.tar.gz -C /tmp 
cd /tmp/expat-2.1.0 
/opt/lampp/bin/perl ./configure --prefix=/opt/lampp LDFLAGS=-L/opt/lampp/lib 
make 
make install 

http://search.cpan.org - buscar y descargar - XML ​​:: Parser

tar zxf /[where-ever]/XML-Parser-2.41.tar.gz -C /tmp 
cd /tmp/XML-Parser-2.41 
/opt/lampp/bin/perl ./Makefile.PL EXPATLIBPATH=/opt/lampp/lib EXPATINCPATH=/opt/lampp/include 
make 
make test 
make install 
3

Trabaja como un encanto en Ubuntu 15.04. Lo único que necesito es instalar Perl Analizador XML con:

sudo apt-get install libxml-parser-perl 

y siguiendo las instrucciones aquí, yo era capaz de importar con éxito todas mis calificaciones en Rhythmbox. Ahora, el único trabajo que tengo que hacer es volver a crear las listas de juegos inteligentes, eso no es nada en comparación con todas mis calificaciones de libray.

2

Hoy tuve el mismo problema al querer cumplir con el nuevo GIMP 2.9.4 beta en OSX 10.8 y la ayuda de homebrew.

Primero instale Perl

brew install perl 

A continuación, el módulo XML :: Parser por entrar en la cáscara del Perl con

perl -MCPAN -e shell 

Y dentro de la cáscara instalar XML :: Parser escribiendo

install XML::Parser 

shell Exit

exit 

Ahora, compruebe que se ha instalado correctamente. Si todo está bien, no verá un error.

perl -e "require XML::Parser" 

Si el ./configure sigue sin falta XML :: Parser, entonces intltools no está usando el Perl que ha instalado. Al mirar el guión, me dice que hace la prueba con $INTLTOOL_PERL -e "require XML::Parser". Probar un echo $INTLTOOL_PERL diste nada, por lo que la magia es fijar con

export $INTLTOOL_PERL=perl 

Ahora ejecute ./configure nuevo.

0

Ninguno de los métodos anteriores funcionó para mí. Tenía la configuración correcta de las variables de entorno, pero de alguna manera no fueron recogidas por cpanm que uso para instalar módulos perl. Expat también fue instalado.

Aquí es lo que hice para superar el mismo problema que la OP está informando. Esto está muy cerca de lo que @LadyBuzz sugirió.

  1. Descargar el XML::Parser de cpan.org
  2. extraeremos el comprimido en el directorio y descienden a la misma.
  3. Abra la Makefile.pl y editar las primeras líneas que en realidad tienen las rutas absolutas a la vez: EXPATLIBPATH y EXPATINCPATH
  4. Guardar la Makefile.pl, sube un nivel y crear un nuevo archivo comprimido con el Makefile.pl que acaba de editar.
  5. Ejecute cpanm en el tarball recién creado.

Esto dio lugar a la correcta instalación del módulo.