如何在没有expat-devel的情况下安装XML :: Parser?

时间:2012-03-13 22:13:51

标签: perl debian cpan expat-parser

XML :: Parser无法在一个非常新的64位Debian盒上构建。发出cpan XML::Parser后,cpan失败并出现大量有关Expat.c和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

输出开头的消息说明构建时需要 expat-devel

  

必须在构建XML :: Parser之前安装Expat,我找不到   它在标准库目录中。用你的安装'expat-devel'包   OS包管理器。请参阅“自述文件”。

expat-devel 不在Debian存储库中。

是否可以在不需要从源代码构建/安装expat的情况下克服这个问题?

6 个答案:

答案 0 :(得分:43)

您要安装的软件包名为libexpat1-dev。您也可以通过apt-get安装libxml-parser-perl。或者,如果您真的想通过CPAN安装,请首先通过apt-get build-dep libxml-parser-perl安装Debian软件包依赖项。

答案 1 :(得分:9)

libexpat1-dev包含libexpat和expat.h,它们也在消息中提到:

  

如果安装了expat,但是在非标准目录中,则使用   以下Makefile.PL选项:

     

EXPATLIBPATH = ...设置查找libexpat的目录

     

EXPATINCPATH = ...设置查找expat.h的目录

安装libexpat1-dev似乎解决了这个问题:

$ aptitude install libexpat1-dev

答案 2 :(得分:5)

始终有手动方法 - 从源代码构建/安装expat。 (此示例显示安装到 XAMPP | LAMPP 的替代位置)

从下载: 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 - 搜索并下载 - 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 :(得分:3)

在Ubuntu 15.04中像魅力一样工作。我唯一需要的是安装Perl XML Parser:

sudo apt-get install libxml-parser-perl

按照此处的说明,我能够将所有评分成功导入Rhythmbox。现在,我需要做的唯一工作是再次创建智能播放列表,这与我的整个图书馆评级相比毫无意义。

答案 4 :(得分:2)

今天我有同样的问题想要在OSX 10.8和自制软件的帮助下压缩新的GIMP 2.9.4测试版。

首先安装perl

brew install perl

然后使用

进入perl shell,进入XML :: Parser模块
perl -MCPAN -e shell

在shell中输入

来安装XML :: Parser
install XML::Parser

退出shell

exit

现在,验证它已成功安装。如果一切正常,您将看不到错误。

perl -e "require XML::Parser"

如果./configure仍然无法丢失XML :: Parser,则intltools不使用您已安装的perl。查看脚本告诉我它使用$INTLTOOL_PERL -e "require XML::Parser"进行测试。尝试echo $INTLTOOL_PERL没有给出任何东西,所以神奇的是用

设置它
export $INTLTOOL_PERL=perl

现在再次运行./configure。

答案 5 :(得分:0)

上述方法均不适合我。我有正确的环境变量设置,但它们以某种方式不被我用来安装perl模块的cpanm选中。还安装了Expat。

以下是我为克服OP报告的相同问题所做的工作。 这与@LadyBuzz建议的非常接近。

  1. XML::Parser
  2. 下载cpan.org
  3. 将tarball解压缩到目录中并下载到它。
  4. 打开Makefile.pl并修改第一行,以实际拥有两者的绝对路径:EXPATLIBPATHEXPATINCPATH
  5. 保存Makefile.pl,上升一级并使用刚刚编辑过的Makefile.pl创建新的tarball。
  6. 在新创建的tarball上执行cpanm
  7. 这导致模块的成功安装。