Jam*_*ard 12 macos perl macos-high-sierra
我最近升级到macOS 10.13 High Sierra,并在尝试安装更新版本的Perl(5.26.1)后遇到问题.问题的关键在于cpan/DB_FilemacOS 10.13 High Sierra(家用笔记本电脑)上的自检失败,但在macOS 10.12 Sierra(工作笔记本电脑)上取得了成功.
以下是显示失败的安装日志部分:
../cpan/Config-Perl-V/t/30_plv5240.t ............................... ok
../cpan/Config-Perl-V/t/31_plv52511.t .............................. ok
../cpan/DB_File/t/db-btree.t ....................................... ok
Use of uninitialized value $value in string eq at t/db-hash.t line 224.
Use of uninitialized value $values[0] in string eq at t/db-hash.t line 224.
Use of uninitialized value $value in lc at t/db-hash.t line 224.
Use of uninitialized value $h{""} in string eq at t/db-hash.t line 243.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252.
Use of uninitialized value in numeric eq (==) at t/db-hash.t line 252.
Use of uninitialized value $foo[18] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[36] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[48] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[58] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[59] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[60] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[62] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[63] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[92] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[114] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[140] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[187] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[188] in join or string at t/db-hash.t line 261.
Use of uninitialized value $foo[189] in join or string at t/db-hash.t line 261.
Use of uninitialized value $h{"Fred"} in string eq at t/db-hash.t line 572.
Use of uninitialized value $v in concatenation (.) or string at t/db-hash.t line 748.
../cpan/DB_File/t/db-hash.t ........................................
Dubious, test returned 2 (wstat 512, 0x200)
Failed 76/166 subtests
Run Code Online (Sandbox Code Playgroud)
无论是使用安装perlbrew install perl-5.26.1还是只是下载Perl tarfile并手动安装,我都能重复同样的失败.当我尝试调试有问题的测试时t/db-hash.t,我可以看到测试哈希%h是在测试文件中创建并填充的,但是当print Dumper(\%h)我看到哈希看起来有正确的键,但是所有的值都是undef,而不是在测试脚本中分配的值.
这些undef值导致测试失败.奇怪的是,当我打印整个哈希或尝试创建哈希值数组时,会显示未定义的值.如果我要求特定的哈希键的值,例如my $value = $h{key},该值打印正常.
问题:
Jam*_*ard 13
这是有效的:
安装Berkeley DB.我使用Homebrew,但您可以在Oracle站点获取源文件.
brew install berkeley-db
Run Code Online (Sandbox Code Playgroud)安装Perl.我使用Perlbrew,但您可以在Perl站点获取源文件.
perlbrew install perl-5.26.1
Run Code Online (Sandbox Code Playgroud)回顾失败的安装日志,这些DB_File部分附近有一条警告,提供线索:
...
./miniperl -Ilib make_ext.pl lib/auto/DB_File/DB_File.bundle MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a LINKTYPE=dynamic
Parsing config.in...
Looks Good.
Warning (mostly harmless): No library found for -ldb
Generating a Unix-style Makefile
Writing Makefile for DB_File
...
Run Code Online (Sandbox Code Playgroud)
找不到db图书馆,大多无害.
根据该DB_File模块的文档,它是......
...一个允许Perl程序使用Berkeley DB提供的工具的模块......
安装后berkeley-db,Perl安装日志的相同部分不再显示相同的警告:
...
./miniperl -Ilib make_ext.pl lib/auto/DB_File/DB_File.bundle MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a LINKTYPE=dynamic
Parsing config.in...
Looks Good.
Generating a Unix-style Makefile
Writing Makefile for DB_File
...
Run Code Online (Sandbox Code Playgroud)
在此过程中,先前失败的测试通过,允许安装成功完成:
...
../cpan/DB_File/t/db-btree.t ....................................... ok
../cpan/DB_File/t/db-hash.t ........................................ ok
../cpan/DB_File/t/db-recno.t ....................................... ok
...
Run Code Online (Sandbox Code Playgroud)
我无法在网上找到任何关于为什么Berkeley DB似乎从macOS 10.13 High Sierra中丢失的文档,以及这是否与之前的macOS版本相比有所改变.
非常感谢蒂姆D帮助我排除故障.
| 归档时间: |
|
| 查看次数: |
3469 次 |
| 最近记录: |