Como instalar XML::Parser sem expat-devel?
-
13-12-2019 - |
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?
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.
- Faça o download do
XML::Parser
decpan.org
- Extraia o tarball no diretório e desça até ele.
- Abra o
Makefile.pl
e edite as primeiras linhas para realmente ter os caminhos absolutos para ambos:EXPATLIBPATH
eEXPATINCPATH
- Salve o
Makefile.pl
, suba um nível e crie um novo tarball com oMakefile.pl
que você acabou de editar. - Executar
cpanm
no tarball recém-criado.
Isso resultou na instalação bem-sucedida do módulo.