幸运的是, Win10 WSL 中的底层问题看起来已经修复,并且(希望)很快就会发布。
正如 MichielB 指出的那样,-A 或 -D 似乎他们应该做到这一点,但从我的一些测试看来,perl 的配置在也通过时不尊重-A
或-D
参数(请参阅 perl 的元配置中的“用法”以了解那些参数)。尽管在生成的 config.sh 的 args 列表中清楚地看到格式正确的 -A 和 -D 标志,但从未添加 dont_use_nlink。-de
碰巧的是,除非您使用特殊的PERLBREW_CONFIGURE_FLAGS
环境变量,否则 perlbrew 会将这些作为默认值传递。
但是,有一种解决方法。你可以使用PERLBREW_CONFIGURE_FLAGS
to-f
来传递我们自己的配置文件。我们可以使用由失败的“perlbrew install”运行生成的最正确的 config.sh,然后对其进行调整并传递它。
脚步:
- 运行将失败的 perlbrew 安装,例如:
perlbrew install perl-5.24.0
- 将生成的 config.sh 文件复制到某处以进行修改和重用:
cp /home/USERNAME/perl5/perlbrew/build/perl-5.24.0/config.sh ~/config_dont_use_nlink.sh
- 编辑文件并插入
dont_use_nlink='define'
. 如果您要整理并按字母顺序归档,它将在 dlsrc 和 doubleinfbytes 之间进行:
dlsrc='dl_dlopen.xs'
dont_use_nlink='define'
doubleinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f'
- 运行 perlbrew install,但设置一个环境变量,将“-f”传递给新的 perl 的配置脚本:
PERLBREW_CONFIGURE_FLAGS="-de -f /home/USERNAME/config_dont_use_nlink.sh" perlbrew install perl-5.24.0
这在 Win10 build 14393 上为我编译了一个大部分干净的 WSL,并且几乎所有测试都通过了(其余的看起来像是已经提交了 WSL 错误的东西)。