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

14

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”软件包。请参阅“README”。

但是,在 Debian 软件仓库中没有 expat-devel

是否可能在不需要从源代码构建/安装 Expat 的情况下解决这个问题?

6个回答

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

9

libexpat1-dev包含libexpat和expat.h两个文件,这两个在信息中都有提到:

如果已经安装了expat,但是在非标准目录下,那么可以使用以下选项来设置Makefile.PL:

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

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

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

$ aptitude install libexpat1-dev

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

在Ubuntu 15.04中运行得非常好。我唯一需要的是安装Perl XML解析器:

sudo apt-get install libxml-parser-perl

按照这里的说明,我成功地将所有评级导入了Rhythmbox。现在,我需要做的唯一工作就是重新创建智能播放列表,与我的整个库评级相比,这算不了什么。


2
今天我遇到了同样的问题,想要在OSX 10.8上编译新版GIMP 2.9.4 beta并得到homebrew的帮助。
首先安装perl。
brew install perl

使用XML::Parser模块,需在perl shell中输入以下命令:

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命令。

0

以上方法都对我没用。我已经设置了正确的环境变量,但是我使用的安装perl模块的cpanm却无法识别它们。Expat也已经安装。

以下是我为解决与OP报告相同的问题所做的事情。这非常接近@LadyBuzz建议的内容。

  1. cpan.org下载XML::Parser
  2. 将tarball解压到目录中并进入该目录。
  3. 打开Makefile.pl并编辑第一行,将EXPATLIBPATHEXPATINCPATH的绝对路径实际写入其中。
  4. 保存Makefile.pl,返回上一级目录,并使用刚刚编辑过的Makefile.pl创建一个新的tarball。
  5. 在新创建的tarball上执行cpanm

这样就成功安装了该模块。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接