Ошибка Perl LibXLST в Mac OS Big Sur 11.4

У меня возникли проблемы с приложением Perl, которое дает сбой из-за ошибки, связанной с LibXSLT, в Mac OS Big Sur 11.4 на нескольких компьютерах (всех Intel Mac) — оно работало правильно до обновления Mac OS, а теперь, похоже, не работает на только что установленной современный Mac.

Сообщение об ошибке для минимального скрипта perl -MXML::LibXSLT -E 'say $INC{"XML/LibXSLT.pm"}' (с использованием системного Perl — на машине не установлен другой Perl) выглядит следующим образом:

Не удается загрузить «/System/Library/Perl/Extras/5.30/darwin-thread-multi-2level/auto/XML/LibXSLT/LibXSLT.bundle» для модуля XML::LibXSLT: dlopen(/System/Library/Perl/ Extras/5.30/darwin-thread-multi-2level/auto/XML/LibXSLT/LibXSLT.bundle, 0x0001): символ '_xsltLibxsltVersion' не найден, ожидается в плоском пространстве имен '/System/Library/Perl/Extras/5.30/darwin -thread-multi-2level/auto/XML/LibXSLT/LibXSLT.bundle' в /System/Library/Perl/5.30/darwin-thread-multi-2level/DynaLoader.pm строка 197. в /System/Library/Perl/Extras /5.30/darwin-thread-multi-2level/XML/LibXSLT.pm строка 48. BEGIN не удалось — компиляция прервана в /System/Library/Perl/Extras/5.30/darwin-thread-multi-2level/XML/LibXSLT.pm строка 48. Не удалось выполнить компиляцию. BEGIN не удалось — компиляция прервана.

cpan -i XML::LibXSLT подтверждает, что XML::LibXSLT is up to date (1.99).

Я попытался обновить библиотеки xslt с помощью brew install libxslt, но, похоже, это не имело никакого значения.

Я пробовал запустить brew link libxslt --force, который теперь ничего не делает (Warning: Refusing to link macOS provided/shadowed software: libxslt).

Запуск cpan -f -t XML::LibXSLT завершается со следующим сообщением об ошибке:

looking for -lxslt... no
libxslt not found
Try setting LIBS and INC values on the command line

Если я установлю значения LIBS и INC на путь, предложенный brew export LIBS="-L/usr/local/opt/libxslt/lib" и export INC="-I/usr/local/opt/libxslt/include", все равно произойдет сбой с этой ошибкой.

Любые предложения о том, как отладить это? Я не разработчик Perl, просто пытаюсь запустить существующее приложение.


person Peteris    schedule 09.06.2021    source источник
comment
Из любопытства, успешно ли работает cpan -f -t XML::LibXSLT?   -  person ikegami    schedule 09.06.2021
comment
Здесь модуль устанавливается нормально. macOS 11.2.3, perlbrew perl версии 5.32.0. Вы используете системный perl?   -  person Håkon Hægland    schedule 09.06.2021
comment
Не удается загрузить '/System/Library/Perl/Extras/5.30/darwin-thread-multi-2level/auto/XML/LibXSLT/LibXSLT.bundle' для модуля XML::LibXSLT: это ошибка, которую вы получаете при запуске cpan XML::LibXSLT, или она исходит от скрипта, который использует модуль?   -  person Håkon Hægland    schedule 09.06.2021
comment
Это M1 или Intel Mac?   -  person Håkon Hægland    schedule 09.06.2021
comment
@HåkonHægland да, он использует системный perl, больше ничего не установлено.   -  person Peteris    schedule 09.06.2021
comment
@ikegami это не так, я отредактировал, чтобы добавить ошибки по этому поводу.   -  person Peteris    schedule 09.06.2021
comment
@HåkonHægland также, я считаю, что эта проблема не была проблемой в macOS 11.2.3, это связано с недавними изменениями macOS. Все работало на той же машине до последнего обновления ОС; Я устанавливал и запускал один и тот же скрипт ранее на нескольких компьютерах, в более ранних версиях macOS он работал без несистемного Perl или чего-то еще необычного. Сейчас у меня нет компьютеров Mac со старой версией macOS для проверки, но я воспроизвел это на другом чистом Mac (на нем никогда не устанавливалось ничего, связанного с perl или xml, только Apple devtools) с 11.4, который имеет точную те же ошибки.   -  person Peteris    schedule 09.06.2021
comment
Я попробовал с системным perl сейчас. Сначала я установил cpanm с sudo cpan App::cpanminus, затем попробовал sudo cpanm XML::LibXSLT, и у меня не получилось с looking for -lxslt... libxslt not found. Try setting LIBS and INC values on the command line Но странно то, что если я запущу его снова, он скажет XML::LibXSLT is up to date. (1.99). Так что здесь также может быть ошибка в cpan и cpanm. Можете ли вы попробовать с perlbrew?   -  person Håkon Hægland    schedule 10.06.2021
comment
Добавлен отчет об ошибке.   -  person Håkon Hægland    schedule 10.06.2021
comment
Можете ли вы обновить свой вопрос с помощью минимального сценария, который вызывает ошибку? Когда я использую системный Perl (с предустановленной XML::LibXSLT), например, следующий сценарий здесь работает нормально: perl -MXML::LibXSLT -E 'say $INC{"XML/LibXSLT.pm"}'. Этот однострочный код дает вам ту же ошибку?   -  person Håkon Hægland    schedule 10.06.2021
comment
@HåkonHægland да, этот однострочник - хороший минимальный пример, он дает ту же ошибку с системным perl на обоих компьютерах Mac 11.4, которые у меня есть на данный момент. Я обновил вопрос с ним.   -  person Peteris    schedule 10.06.2021
comment
Какой результат вы получите при выполнении команды pkg-config --debug libxslt? Вот результат, который я получаю.   -  person Håkon Hægland    schedule 10.06.2021
comment
@HåkonHægland Я думаю, что получаю точно такой же вывод pastebin.com/WzCXatvN от «свежего» Mac; недавно обновленный (pastebin.com/X26QRx1v) имеет немного другие пути для SDK инструментов командной строки.   -  person Peteris    schedule 10.06.2021
comment
Да, это точно такой же результат, как и у меня, очень странно, что скрипт работает для меня, а не для вас. Думаю, мне придется обновить свой Mac до 11.4, чтобы больше проверить, что происходит.   -  person Håkon Hægland    schedule 10.06.2021
comment
Добавлен отчет об ошибке.   -  person Håkon Hægland    schedule 12.06.2021


Ответы (1)


Перлбрю

В конце концов, мне удалось использовать perlbrew вместо системного perl OS X по умолчанию.

Следующий процесс работал, основываясь на рекомендациях на https://perlbrew.pl:

curl -L https://install.perlbrew.pl | bash   
source ~/perl5/perlbrew/etc/bashrc
perlbrew install perl-5.16.0   
perlbrew switch perl-5.16.0
sudo cpan -i XML::LibXSLT

Я рассматриваю это не как правильное решение, а как обходной путь - в конце концов, нет никаких причин, по которым предустановленная OS X libxslt не должна просто работать с предустановленной системой perl - но она, по крайней мере, работает.

person Peteris    schedule 10.06.2021
comment
Отлично, что у тебя получилось. Я посмотрю на проблему с системным perl позже. Обратите внимание, что вам не нужно использовать (и не следует использовать) sudo с perlbrew perl. А Perl версии 5.16 уже девять лет, я бы использовал одну из новейших версий 5.34 или 5.32. - person Håkon Hægland; 10.06.2021
comment
@HåkonHægland хорошо, perlbrew.pl по-прежнему указывает 5.16 как последнюю стабильную версию :) - person Peteris; 10.06.2021
comment
Да это нехорошо. Вероятно, они просто забыли обновить эту часть. Я уведомлю их. - person Håkon Hægland; 10.06.2021
comment
Вот список стабильных выпусков - person Håkon Hægland; 10.06.2021
comment
perlbrew.pl по-прежнему указывает 5.16 как последнюю стабильную версию: добавлено комментарий об этом.. - person Håkon Hægland; 10.06.2021