XML::LibXML — проблема с установкой модуля на свежую macOS BigSur

Я уже давно успешно использую модуль XML::LibXML в macOS.

Теперь я пытаюсь установить его на новую машину с macOS BigSur:

  • perl Makefile.PL
  • сделать
  • сделать тест
  • выполнить установку

Однако в make test я получаю несколько ошибок вида:

t/00-report-prereqs.t .............................. ok
t/01basic.t ........................................ 
Can't load '/Users/lockit/Desktop/TESTS_Irina/XML-LibXML-2.0204/blib/arch/auto/XML/LibXML/LibXML.bundle'
for module XML::LibXML: dlopen(/Users/lockit/Desktop/TESTS_Irina/XML-LibXML-2.0204/blib/arch/auto/XML/LibXML/LibXML.bundle, 0x0002): 
symbol '_xmlFree' not found, expected in flat namespace by 
'/Users/lockit/Desktop/TESTS_Irina/XML-LibXML-2.0204/blib/arch/auto/XML/LibXML/LibXML.bundle' 
at /System/Library/Perl/5.28/darwin-thread-multi-2level/DynaLoader.pm line 197.
at /Users/lockit/Desktop/TESTS_Irina/XML-LibXML-2.0204/blib/lib/XML/LibXML.pm line 156.
BEGIN failed--compilation aborted 
at /Users/lockit/Desktop/TESTS_Irina/XML-LibXML-2.0204/blib/lib/XML/LibXML.pm line 156.

Compilation failed in require at t/01basic.t line 6.

И модуль не может быть установлен.

Любые подсказки, что мне не хватает и как исправить?

Спасибо, Ирина


person user3206362    schedule 15.01.2021    source источник
comment
Я думаю, это связано с одним из обратно несовместимых изменений, внесенных Big Sur. Я думаю, что это было исправлено, но я не думаю, что были выпущены какие-либо релизы. с исправлением.   -  person ikegami    schedule 15.01.2021


Ответы (2)


Вы прочитали README для модуля? Он включает в себя следующее:

ЗАВИСИМОСТИ
=============
Перед установкой вы ДОЛЖНЫ установить библиотеку libxml2. Вы можете получить последнюю версию libxml2 из

http://xmlsoft.org/

Без установленной libxml2 этот модуль не будет ни собираться, ни запускаться.

Также для XML::LibXML требуются следующие пакеты:
o XML::SAX — базовый класс для анализаторов SAX
o XML::NamespaceSupport — поддержка пространства имен для анализаторов SAX.

Эти пакеты обязательны. Если один отсутствует, некоторые тесты не пройдут.

Опять же, для работы XML::LibXML требуется libxml2. Библиотека требуется не только для сборки XML::LibXML, она также должна быть доступна во время выполнения. Поэтому вам необходимо убедиться, что libxml2 установлен правильно. Чтобы проверить это, запустите программу xmlint в своей системе. xmlint поставляется с libxml2 и поэтому должен быть доступен. Для сборки модуля вам также понадобится заголовочный файл для libxml2, который в бинарных (.rpm,.deb) и т. д. дистрибутивах обычно находится в пакете с именем libxml2-devel или подобным.

Поэтому вам необходимо установить libxml2 (и его заголовочные файлы для разработки) в вашей системе.

person Dave Cross    schedule 15.01.2021
comment
Вряд ли это проблема (учитывая наличие заголовочных файлов библиотеки). Big Sur нарушил цепочку инструментов Perl, так что -lfoo не предоставляется компоновщику, когда это необходимо. Это, вероятно, проблема на руку - person ikegami; 15.01.2021
comment
libxml2 установлен. Похоже, это проблема с динамическим компоновщиком Apple, как описано здесь: github.com /Perl-Toolchain-Gang/ExtUtils-MakeMaker/issues/381. Я установил предложенный ExtUtils-MakeMaker-7.58, и это решило первоначальную проблему. - person user3206362; 22.01.2021

Похоже, это проблема с динамическим компоновщиком Apple, как описано здесь:

https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/issues/381.

Я установил предложенный модуль ExtUtils-MakeMaker-7.58, и это решило первоначальную проблему.

Однако теперь появилась новая ошибка при make: /usr/bin/perl -MExtUtils::Command::MM -e 'cp_nonempty' -- LibXML.bs blib/arch/auto/XML/LibXML/LibXML.bs 644 cc -c -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -g -pipe -fno-strict-aliasing -fstack-protector-strong -DPERL_USE_SAFE_PUTENV -Wno-error=неявное-объявление-функции -Os -DVERSION=2.0206 -DXS_VERSION=2.0206 -I/System/Library/Perl/5.28/darwin-thread-multi-2level/CORE -DHAVE_UTF8 Av_CharPtrPtr.c Av_CharPtrPtr.c:6:10: фатальная ошибка: файл 'EXTERN.h' не найдено #include EXTERN.h

Любая подсказка?

person user3206362    schedule 22.01.2021