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 。

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

但是expat-devel不在 Debian 存储库中。

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

4

6 回答 6

45

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

于 2012-03-13T22:20:50.323 回答
9

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

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

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

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

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

$ aptitude install libexpat1-dev
于 2012-03-13T22:20:30.713 回答
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
于 2012-04-24T20:19:42.123 回答
3

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

sudo apt-get install libxml-parser-perl

并按照此处的说明,我能够成功地将我的所有评分导入 Rhythmbox。现在,我需要做的唯一工作就是再次创建智能播放列表,这与我的整个库收视率相比微不足道。

于 2015-05-24T00:54:11.893 回答
2

今天我遇到了同样的问题,想在 OSX 10.8 上编译新的 GIMP 2.9.4 beta 并借助自制软件。

首先安装perl

brew install perl

然后 XML::Parser 模块通过进入 perl shell

perl -MCPAN -e shell

并在 shell 中通过键入安装 XML::Parser

install XML::Parser

退出外壳

exit

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

perl -e "require XML::Parser"

如果 ./configure 仍然失败,缺少 XML::Parser,则 intltools 没有使用您安装的 perl。查看脚本告诉我它使用$INTLTOOL_PERL -e "require XML::Parser". 尝试 aecho $INTLTOOL_PERL什么都没有,所以神奇的是设置它

export $INTLTOOL_PERL=perl

现在再次运行 ./configure。

于 2016-07-21T17:20:27.473 回答
0

以上方法都不适合我。我设置了正确的环境变量,但是cpanm我用来安装 perl 模块时并没有发现它们。还安装了外籍人士。

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

  1. XML::Parser从下载cpan.org
  2. 将 tarball 解压缩到目录并下降到它。
  3. 打开Makefile.pl并编辑第一行以实际拥有两者的绝对路径:EXPATLIBPATHEXPATINCPATH
  4. 保存Makefile.pl,上一级并使用Makefile.pl您刚刚编辑的 tar 文件创建一个新的 tarball。
  5. cpanm在新创建的 tarball 上执行。

这导致模块的成功安装。

于 2017-06-08T16:36:26.280 回答