latexindent:自从macOS 11 Big Sur以来,安装File::HomeDir、Mac::SystemDirectory时出现问题

latexindent:自从macOS 11 Big Sur以来,安装File::HomeDir、Mac::SystemDirectory时出现问题,macos,perl,latex,cpan,macos-big-sur,Macos,Perl,Latex,Cpan,Macos Big Sur,在开始之前,我应该注意到我在macOS 10.15 Catalina上从未遇到过这个问题,不幸的是,类似线程中的响应并没有解决这个问题 我正在新安装的macOS 11 Big Sur上试用latexindent,我遇到了File:HomeDir的问题:运行latexindent会返回一个完整的错误列表,从@INC中的找不到File/HomeDir.pm开始。我曾尝试使用cpan安装该模块,但最终得到以下结果: Reading '/Users/myname/.cpan/Metadata' Da

在开始之前,我应该注意到我在macOS 10.15 Catalina上从未遇到过这个问题,不幸的是,类似线程中的响应并没有解决这个问题

我正在新安装的macOS 11 Big Sur上试用
latexindent
,我遇到了
File:HomeDir
的问题:运行
latexindent
会返回一个完整的错误列表,从@INC中的
找不到File/HomeDir.pm开始。我曾尝试使用
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)
从这个角度看,似乎缺少一个头文件
EXTERN.h
,但我不确定从这里转到哪里。有人有什么想法或建议吗?我为这些巨大的代码块道歉——我想最好包括所有可能的细节。非常感谢


注意:我发布了这篇文章,但我想我也会在这里提问,因为这似乎是一个更广泛的perl问题。

总结一下对我有效的解决方案:问题是头文件
EXTERN.h
在macOS 11 Big Sur中默认不在
CPATH
上。要解决此问题,请将包含
EXTERN.h
的目录添加到
CPATH

export CPATH=/Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/System/Library/Perl/5.28/darwin-thread-multi-2level/CORE:$CPATH
然后打开
cpan
shell(只需键入
cpan
,然后进入命令行)并键入
install Mac::SystemDirectory
。这个过程完成后,我还可以安装
File:HomeDir
和一些其他模块,以使
latexindent
正常工作

注意:我必须先设置
cpan
,然后才能这样做;只要打开外壳并按照说明操作就足够了


非常感谢您提供的解决方案

EXTERN.h
是Perl的一部分。但是你的发行版(苹果)可能会保留它。也许您需要安装一个软件包?现在在Big Sur上构建尝试链接到外部库的模块时出现问题,但这似乎并不相关。您使用的是哪个版本的
perl
?键入
哪个perl;perl——版本
。如果您使用的是perl系统,也许可以尝试使用perlbrew安装Perl5.32?我想你会得到
EXTERN.h
标题,就像
ExtUtils::HasCompiler
失败一样,我在他们的问题上添加了一个trackerA临时补丁,似乎是显式设置include搜索路径:
export CPATH=/Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/System/Library/Perl/5.28/darwin-thread-multi-2level/CORE:$CPATH
,然后为我运行
sudo cpan Mac::SystemDirectory
,路径
/Library/Developer/CommandLineTools/SDKs/
不存在(CommandLineTools
中唯一的目录是
usr/share/man
)。我不知道从那以后该怎么办。我尝试了
brew安装perl
,但它没有创建该目录。我的
perl--version
是v5.28.2。您是否运行了
xcode-select--install
?我认为应该填充
CommandLineTools
目录。太好了,非常感谢!我想这让我克服了这个问题。
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