Pergunta

XML::Parser não consegue construir uma caixa Debian de 64 bits bastante nova.Depois de emitir cpan XML::Parser, o cpan falha com muitos erros sobre Expat.c e Expat.xs:

[...]
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

A mensagem no início da saída explica que expat-devel é necessário para a construção.

Expat deve ser instalado antes de criar XML::P arser e eu não consigo encontrar nos diretórios padrão da biblioteca.Instale o pacote 'expat-devel' com o seu Gerenciador de pacotes do sistema operacional.Consulte 'README'.

Mas expat-devel não está no repositório Debian.

É possível superar isso sem a necessidade de construir/instalar o expat a partir do código-fonte?

Foi útil?

Solução

O pacote que você deseja instalar é nomeado libexpat1-dev.Você também pode simplesmente instalar libxml-parser-perl através do apt-get.Ou se você realmente deseja instalar via CPAN, tente primeiro instalar as dependências dos pacotes Debian via apt-get build-dep libxml-parser-perl.

Outras dicas

libexpat1-dev contém libexpat e expat.h, que também são mencionados na mensagem:

Se expat estiver instalado, mas em um diretório não padrão, use o seguintes opções para Makefile.PL:

EXPATLIBPATH=...Para definir o diretório onde encontrar o libexpat

EXPATINCPATH=...Para definir o diretório no qual encontrar expat.h

A instalação do libexpat1-dev parece resolver o problema:

$ aptitude install libexpat1-dev

Sempre existe o método manual - para construir/instalar o expat a partir do código-fonte.(Este exemplo mostra a instalação em um local alternativo para XAMPP - Brasil | LAMPP)

Baixe de: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 - pesquisar e baixar - 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

Funciona perfeitamente no Ubuntu 15.04.A única coisa que preciso é instalar o Perl XML Parser com:

sudo apt-get install libxml-parser-perl

E seguindo as instruções aqui, consegui importar com sucesso todas as minhas classificações para o Rhythmbox.Agora, o único trabalho que preciso fazer é criar novamente as listas de reprodução inteligentes, o que não é nada comparado com todas as minhas classificações da biblioteca.

Hoje tive o mesmo problema ao querer compilar o novo GIMP 2.9.4 beta no OSX 10.8 e com o auxílio do homebrew.

Primeiro instale o perl

brew install perl

Em seguida, o módulo XML::Parser entrando no shell perl com

perl -MCPAN -e shell

E dentro do shell instale XML::Parser digitando

install XML::Parser

Sair do shell

exit

Agora, verifique se foi instalado com sucesso.Se tudo estiver bem, você não verá nenhum erro.

perl -e "require XML::Parser"

Se o ./configure ainda falhar, faltando XML::Parser, então o intltools não está usando o perl que você instalou.Olhando para o script me diz que ele faz o teste com $INTLTOOL_PERL -e "require XML::Parser".Tentando um echo $INTLTOOL_PERL não deu nada, então a mágica é configurá-lo

export $INTLTOOL_PERL=perl

Agora execute ./configure novamente.

Nenhum dos métodos acima funcionou para mim.Eu tinha as variáveis ​​de ambiente corretas configuradas, mas de alguma forma elas não foram captadas por cpanm que eu uso para instalar módulos perl.Expat também foi instalado.

Aqui está o que fiz para superar o mesmo problema que o OP está relatando.Isto está muito próximo do que @LadyBuzz sugerido.

  1. Faça o download do XML::Parser de cpan.org
  2. Extraia o tarball no diretório e desça até ele.
  3. Abra o Makefile.pl e edite as primeiras linhas para realmente ter os caminhos absolutos para ambos: EXPATLIBPATH e EXPATINCPATH
  4. Salve o Makefile.pl, suba um nível e crie um novo tarball com o Makefile.pl que você acabou de editar.
  5. Executar cpanm no tarball recém-criado.

Isso resultou na instalação bem-sucedida do módulo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top