Please use the following bug reporting template to help produce actionable and reproducible issues:
Perl devs often use cpan to build/install modules where no .deb exists or the .deb is much older than the current one. I tried to use cpanm to install YAML::XS, and it failed tests, specifically relating to newlines. I use Ubuntu 14.04 LTS and cpan, and can assert this passes there.
A working YAML::XS module.
log file in a gist linked below. Errors come at lines 146, 162 and 207. This package installs flawlessly on other systems, including Strawberry Perl on the same machine.
sudo apt-get install cpanm
sudo cpanm YAML::XS
cpanm (A faster version of Perl's cpan command)
See our contributing instructions for assistance.
Log exists as a Github Gist:
Errors are on lines 146, 162 and 207.
You can't install the module because File::Find can not recurse directories on the file system that is in use by Ubuntu on Windows.
The solution is to edit Config.pm:
sudo vi /usr/lib/perl/5.18.2/Config.pm
Set dont_use_nlink to 'define':
dont_use_nlink => 'define',
Now it's possible to install all modules you want!
(this is a duplicate of #186)
For 16.04, the correct path to edit is /usr/lib/x86_64-linux-gnu/perl/5.22.1/Config.pm.
Given that this reflects a fundamental difference between Windows and "real" Ubuntu Linux, shouldn't WSL Perl ship with this patch already in place? I get that the project is trying to use upstream packages untouched, but does the WSL project really want to make all Perl users hand-hack their install to allow cpanm and such to work?
I wouldn't be asking if this weren't a long-term problem with a simple, known solution, which has just bitten me for the second time.
I'd also very much like an 'upstream' patch from Ubuntu/Microsoft here!
See #910 and #186. Either WSL or perl will fix this, depending on where the fix should live. I thought File::Find, but after seeing 910 I'm no longer so sure.