XML::LibXML 未安装在 ubuntu 22.04 上

问题描述 投票:0回答:2

我在 ubuntu 22.04 上使用 cpan 安装 XML::LibXML 时遇到问题。 我已经安装了 libxml2 和 zlib1g。 CPAN 报告说它看到了 libxml2:

# Compiled against libxml2 version: 21303
# Running libxml2 version:          21303

所有软件包要求均已安装。 (如果您需要查看版本号,我可以列出它们),但全部都存在)

有一些警告。还有一些失败的测试。但安装本身失败:

Files=77, Tests=2546, 11 wallclock secs ( 0.62 usr  0.14 sys +  9.57 cusr  1.35 csys = 11.68 CPU)
Result: FAIL
Failed 4/77 test programs. 3/2546 subtests failed.
make: *** [Makefile:1327: test_dynamic] Error 255
  SHLOMIF/XML-LibXML-2.0210.tar.gz
  /bin/make test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
  reports SHLOMIF/XML-LibXML-2.0210.tar.gz


我尝试的是:

cpan XML::LibXML

针对某些已贬值的内容显示了一些警告:

x86_64-linux-gnu-gcc -c  -I/usr/local/lib/x86_64-linux-gnu/perl/5.34.0/auto/share/dist/Alien-Libxml2/include/libxml2 -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno
-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g   -DVERSION=\"2.0210\" -DXS_VERSION=\"2.0210\" -fPIC "-I/usr/lib/x86_64
-linux-gnu/perl/5.34/CORE"  -DHAVE_UTF8 perl-libxml-sax.c
perl-libxml-sax.c: In function 'PmmSaxError':
perl-libxml-sax.c:1539:28: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifi
ers]
 1539 |     xmlErrorPtr last_err = xmlCtxtGetLastError( ctxt );
      |     
                   ^~~~~~~~~~~~~~~~~~~

有些测试失败了:

t/19die_on_invalid_utf8_rt_58848.t ................. 
#   Failed test 'Parser error.'
#   at t/19die_on_invalid_utf8_rt_58848.t line 19.
#                   'example/thedieline.rss:26: I/O error : Invalid bytes in character encoding
# .com%2fblog%2f2010%2f06%2fginja-d-%25c3%25b3bidos.html&t=Ginja+d%26%2339%3b+
#                                                                                 ^
# example/thedieline.rss:26: parser error : Entity 'ldquo' not defined
# log%2f2010%2f06%2fginja-d-%25c3%25b3bidos.html&t=Ginja+d%26%2339%3b+�“

Test Summary Report
-------------------
t/02parse.t                                      (Wstat: 256 Tests: 533 Failed: 1)
  Failed test:  511
  Non-zero exit status: 1
t/08findnodes.t                                  (Wstat: 256 Tests: 45 Failed: 1)
  Failed test:  14
  Non-zero exit status: 1
t/19die_on_invalid_utf8_rt_58848.t               (Wstat: 256 Tests: 1 Failed: 1)
  Failed test:  1
  Non-zero exit status: 1
t/60error_prev_chain.t                           (Wstat: 65280 Tests: 0 Failed: 0)
  Non-zero exit status: 255
  Parse errors: Bad plan.  You planned 1 tests but ran 0.
Files=77, Tests=2546, 11 wallclock secs ( 0.62 usr  0.14 sys +  9.57 cusr  1.35 csys = 11.68 CPU)
Result: FAIL
Failed 4/77 test programs. 3/2546 subtests failed.
make: *** [Makefile:1327: test_dynamic] Error 255
  SHLOMIF/XML-LibXML-2.0210.tar.gz
  /bin/make test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
  reports SHLOMIF/XML-LibXML-2.0210.tar.gz

任何帮助表示赞赏 - Dean Guenther

ubuntu libxml2 cpan
2个回答
0
投票

好消息,我终于成功了。我做了三件事,但我不确定哪件事起作用了:

  1. 首先,我在某处找到了一个帖子,表明要这样做:

安装 libxml-libxml-perl

我这样做并重试安装 XML::LibXML 但仍然失败。

  1. 然后我看到另一篇文章,几年前有人遇到了麻烦,他们最终更新了所有 ubuntu 软件包。

  2. 另一篇文章说要更新所有 CPAN 软件包。

在这三者之间,我现在能够构建 XML::LibXML。 - 院长


0
投票

如果您尝试从 CPAN 安装

XML::LibXML
并且没有安装 libxml2 开发包,它将下载基本上随机版本的 libxml2,尝试构建它并将其安装在
/usr/share/perl
中的某个位置。它还会对 libxml2 的依赖项(如 liblzma)执行相同的操作。它不会告诉您任何相关信息,而是在您的系统上留下来源可疑的二进制文件,而这些二进制文件永远不会通过安全更新进行修补。所有这一切同时您的发行版很可能已经安装了一个完美的 libxml2 版本,它将接收安全修复程序。

听起来很疯狂?我也这么认为,但是 Perl

Alien
子系统的维护者显然认为这就是一个健全的软件供应链的样子。

最好的解决方法是确保安装了 libxml2 开发包(

libxml2-dev
libxml2-devel
)。这将确保
XML::LibXML
是使用您发行版的 libxml2 版本构建的。作为替代方案,只需使用发行版的
XML::LibXML
软件包(Debian 和 Ubuntu 上为
libxml-libxml-perl
)。

一旦合并此 PR,测试失败应该得到修复。

© www.soinside.com 2019 - 2024. All rights reserved.