Latexindent: проблемы с установкой File::HomeDir, Mac::SystemDirectory начиная с macOS 11 Big Sur

Прежде чем я начну, я должен отметить, что у меня никогда не было этой проблемы на macOS 10.15 Catalina, и ответы в этой похожей теме, к сожалению, не решили проблему.

Я экспериментирую с latexindent при новой установке macOS 11 Big Sur, и у меня возникают проблемы с File:HomeDir: запуск latexindent возвращает весь список ошибок, начиная с Can't locate File/HomeDir.pm in @INC. Я пытался использовать cpan для установки этого модуля, но в итоге получил следующее:

Reading '/Users/myname/.cpan/Metadata'
  Database was generated on Thu, 24 Dec 2020 05:41:03 GMT
Running install for module 'File::HomeDir'
Checksum for /Users/myname/.cpan/sources/authors/id/R/RE/REHSACK/File-HomeDir-1.006.tar.gz ok
Scanning cache /Users/myname/.cpan/build for sizes
............................................................................DONE
'YAML' not installed, will not store persistent state
Configuring R/RE/REHSACK/File-HomeDir-1.006.tar.gz with Makefile.PL
Checking if your kit is complete...
Looks good
Warning: prerequisite Mac::SystemDirectory 0.04 not found.
Generating a Unix-style Makefile
Writing Makefile for File::HomeDir
Writing MYMETA.yml and MYMETA.json
  REHSACK/File-HomeDir-1.006.tar.gz
  /usr/bin/perl Makefile.PL -- OK
Running make for R/RE/REHSACK/File-HomeDir-1.006.tar.gz
---- Unsatisfied dependencies detected during ----
----     REHSACK/File-HomeDir-1.006.tar.gz    ----
    Mac::SystemDirectory [requires]
Running install for module 'Mac::SystemDirectory'
Checksum for /Users/myname/.cpan/sources/authors/id/E/ET/ETHER/Mac-SystemDirectory-0.13.tar.gz ok
Configuring E/ET/ETHER/Mac-SystemDirectory-0.13.tar.gz with Makefile.PL
HASCOMPILERjIOx/TESTn6oE.c:2:10: fatal error: 'EXTERN.h' file not found
#include "EXTERN.h"
         ^~~~~~~~~~
1 error generated.
Couldn't execute cc  -g -pipe -fno-strict-aliasing -fstack-protector-strong -DPERL_USE_SAFE_PUTENV -Os "-I/System/Library/Perl/5.28/darwin-thread-multi-2level/CORE"   -c HASCOMPILERjIOx/TESTn6oE.c -o HASCOMPILERjIOx/TESTn6oE.o: Inappropriate ioctl for device at Makefile.PL line 14.
Requires a compiler
Warning: No success on command[/usr/bin/perl Makefile.PL]
  ETHER/Mac-SystemDirectory-0.13.tar.gz
  /usr/bin/perl Makefile.PL -- NOT OK
  REHSACK/File-HomeDir-1.006.tar.gz
  Has already been unwrapped into directory /Users/myname/.cpan/build/File-HomeDir-1.006-2
  REHSACK/File-HomeDir-1.006.tar.gz
  Has already been prepared
Running make for R/RE/REHSACK/File-HomeDir-1.006.tar.gz
Warning: Prerequisite 'Mac::SystemDirectory => 0.04' for 'REHSACK/File-HomeDir-1.006.tar.gz' failed when processing 'ETHER/Mac-SystemDirectory-0.13.tar.gz' with 'writemakefile => NO '/usr/bin/perl Makefile.PL' returned status 6400'. Continuing, but chances to succeed are limited.
cp lib/File/HomeDir/Driver.pm blib/lib/File/HomeDir/Driver.pm
cp lib/File/HomeDir/MacOS9.pm blib/lib/File/HomeDir/MacOS9.pm
cp lib/File/HomeDir/Darwin/Carbon.pm blib/lib/File/HomeDir/Darwin/Carbon.pm
cp lib/File/HomeDir/Darwin/Cocoa.pm blib/lib/File/HomeDir/Darwin/Cocoa.pm
cp lib/File/HomeDir/Windows.pm blib/lib/File/HomeDir/Windows.pm
cp lib/File/HomeDir/FreeDesktop.pm blib/lib/File/HomeDir/FreeDesktop.pm
cp lib/File/HomeDir.pm blib/lib/File/HomeDir.pm
cp lib/File/HomeDir/Test.pm blib/lib/File/HomeDir/Test.pm
cp lib/File/HomeDir/Darwin.pm blib/lib/File/HomeDir/Darwin.pm
cp lib/File/HomeDir/Unix.pm blib/lib/File/HomeDir/Unix.pm
Manifying 10 pod documents
  REHSACK/File-HomeDir-1.006.tar.gz
  /usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t xt/*.t
t/01_compile.t ........ 1/11 # Implemented by: File::HomeDir::Darwin
t/01_compile.t ........ ok     
t/02_main.t ........... # $<: 501 -- $(: 20 20 12 61 79 80 81 98 701 33 100 204 250 395 398 399 400
t/02_main.t ........... ok     
t/10_test.t ........... ok     
t/11_darwin.t ......... ok   
t/12_darwin_carbon.t .. skipped: Not running on 32-bit Darwin
t/13_darwin_cocoa.t ... skipped: Not running on Darwin with Cocoa API using Mac::SystemDirectory
t/20_empty_home.t ..... ok   
All tests successful.
Files=7, Tests=90,  1 wallclock secs ( 0.04 usr  0.01 sys +  0.48 cusr  0.13 csys =  0.66 CPU)
Result: PASS
  REHSACK/File-HomeDir-1.006.tar.gz
Tests succeeded but one dependency not OK (Mac::SystemDirectory)
  REHSACK/File-HomeDir-1.006.tar.gz
  [dependencies] -- NA
Failed during this command:
 ETHER/Mac-SystemDirectory-0.13.tar.gz        : writemakefile NO '/usr/bin/perl Makefile.PL' returned status 6400
 REHSACK/File-HomeDir-1.006.tar.gz            : make_test NO one dependency not OK (Mac::SystemDirectory)

Я действительно не очень разбираюсь в Perl, но мне кажется, что Mac::SystemDirectory отсутствует. Однако когда я пытаюсь установить это, я получаю

Reading '/Users/myname/.cpan/Metadata'
  Database was generated on Thu, 24 Dec 2020 05:41:03 GMT
Running install for module 'Mac::SystemDirectory'
Checksum for /Users/myname/.cpan/sources/authors/id/E/ET/ETHER/Mac-SystemDirectory-0.13.tar.gz ok
Scanning cache /Users/myname/.cpan/build for sizes
............................................................................DONE
'YAML' not installed, will not store persistent state
Configuring E/ET/ETHER/Mac-SystemDirectory-0.13.tar.gz with Makefile.PL
HASCOMPILER5Emh/TESTS3W7.c:2:10: fatal error: 'EXTERN.h' file not found
#include "EXTERN.h"
         ^~~~~~~~~~
1 error generated.
Couldn't execute cc  -g -pipe -fno-strict-aliasing -fstack-protector-strong -DPERL_USE_SAFE_PUTENV -Os "-I/System/Library/Perl/5.28/darwin-thread-multi-2level/CORE"   -c HASCOMPILER5Emh/TESTS3W7.c -o HASCOMPILER5Emh/TESTS3W7.o: Inappropriate ioctl for device at Makefile.PL line 14.
Requires a compiler
Warning: No success on command[/usr/bin/perl Makefile.PL]
  ETHER/Mac-SystemDirectory-0.13.tar.gz
  /usr/bin/perl Makefile.PL -- NOT OK
Failed during this command:
 ETHER/Mac-SystemDirectory-0.13.tar.gz        : writemakefile NO '/usr/bin/perl Makefile.PL' returned status 6400

Из этого кажется, что заголовочный файл EXTERN.h отсутствует, но я не уверен, куда идти дальше. У кого-нибудь есть мысли или предложения? Приношу свои извинения за огромные блоки кода — я решил, что будет лучше включить все возможные детали. Большое спасибо!

Примечание. Я опубликовал этот тот же вопрос в LaTeX Stack Exchange, но решил задать и здесь, так как это, похоже, более широкая проблема perl.

EXTERN.h является частью Perl. Но ваш дистрибутив (Apple) мог отказаться от его включения. Может быть, вам нужно установить какой-то пакет?
ikegami 24.12.2020 09:07

Есть проблемы со сборкой модулей, которые пытаются ссылаться на внешние библиотеки прямо сейчас в Big Sur, но это, похоже, не связано.

ikegami 24.12.2020 09:10

Какую версию perl вы используете? Введите which perl; perl --version. Если вы используете системный perl, возможно, вы могли бы попробовать установить perl 5.32 с помощью perlbrew? Я думаю, тогда вы получите заголовок EXTERN.h

Håkon Hægland 24.12.2020 09:46

Похоже, это ExtUtils::HasCompiler не работает, я добавил проблему в их трекер проблем

Håkon Hægland 24.12.2020 10:49

Временное исправление, по-видимому, заключается в том, чтобы явно указать путь поиска включения: export CPATH=/Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sd‌​k/System/Library/Per‌​l/5.28/darwin-thread‌​-multi-2level/CORE:$‌​CPATH, а затем запустить sudo cpan Mac::SystemDirectory

Håkon Hægland 24.12.2020 12:00

Хокон, спасибо за все ваши мысли. Похоже, сейчас у меня v5.28.2. Хотя отсутствующий заголовок определенно находится в каталоге, на который вы указали, я все равно получаю ту же ошибку после установки нового пути.

Collin Sinclair 24.12.2020 19:44

РЕШЕНО: после добавления в CPATH установка Mac::SystemDirectory работала из оболочки cpan. Я понятия не имею, почему это не сработало в одном лайнере, но, тем не менее, это решило проблему. Спасибо большое Хокон!

Collin Sinclair 24.12.2020 19:55

Отвечает ли это на ваш вопрос? «Неустранимая ошибка: файл EXTERN.h не найден» при установке модулей Perl

Kenny Evitt 25.12.2021 22:36
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
6
8
1 621
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Подводя итог решению, которое сработало для меня: проблема в том, что файл заголовка EXTERN.h не находится в CPATH по умолчанию в macOS 11 Big Sur. Чтобы это исправить, добавьте каталог, содержащий EXTERN.h, в CPATH:

export CPATH=/Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/System/Library/Perl/5.28/darwin-thread-multi-2level/CORE:$CPATH

Затем откройте оболочку cpan (просто введите cpan, затем введите в командной строке) и введите install Mac::SystemDirectory. После завершения этого процесса я также смог установить File:HomeDir и некоторые другие модули, чтобы заставить latexindent работать.

Примечание: мне нужно было настроить cpan, прежде чем я это сделал; достаточно было просто открыть оболочку и следовать инструкциям.

Большое спасибо Håkon Hægland за решение!

Для меня путь /Library/Developer/CommandLineTools/SDKs/ не существует (единственный каталог внутри CommandLineTools — это usr/share/man). Я не знаю, куда идти оттуда. Я пробовал brew install perl, но он не создал этот каталог. Мой perl --version v5.28.2.

jarhill0 04.02.2021 03:28

Вы бегали xcode-select --install? Я думаю, что это должно заполнить каталог CommandLineTools.

Collin Sinclair 05.02.2021 04:31

Идеально, большое спасибо! Я думаю, что это избавило меня от этой конкретной проблемы.

jarhill0 06.02.2021 01:38

Если текущий $CPATH пуст, то это решение добавит . к путям включения по умолчанию. Это может вызвать проблемы в другом месте, например, в расширении VSCode C++ . Версия в этом ответе также больше не входит в последнюю версию macOS. Обновленная и исправленная версия будет export CPATH = "/Library/Developer/CommandLineTools/SDKs/MacOSX12.3.s‌​dk/System/Library/Pe‌​rl/5.18/darwin-threa‌​d-multi-2level/CORE$‌​{CPATH:+:${CPATH}}"

Daniel Stone 24.03.2022 13:18

Другие вопросы по теме