macOS 11下latexindent安装File::HomeDir、Mac::SystemDirectory报错
前置说明
- 我在macOS 10.15 Catalina系统上从未遇到过这类问题
- 同类型主题帖中的回帖方案也没能解决我的故障
问题现象与排查过程
初始报错与模块安装尝试
在全新安装的macOS 11 Big Sur系统上试用latexindent工具时,遇到了与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)
缺失依赖单独安装报错
从输出判断当前应该是缺少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相关问题,故在此同步提问
- 附上全量输出是为了便于问题定位,非常感谢提供帮助
内容的提问来源于stack exchange,提问作者Collin Sinclair
相关产品推荐
相关产品推荐

