これで解決!「bash on Ubuntu on Windows」のPerlの不具合を治す方法
2016年8月に「bash on Ubuntu on Windows」が登場した。みなさんもう試して、楽しんでいますか。
Windows上で本物のPerlを動かせるなんて夢みたい。僕が作っているGitPrepなんかは、Windowsでは、動かせないから、これは本当によいことだ。
でも、少し不具合がある。bash on Ubuntu on Windowsは、ハードリンクを通常のLinuxと違って正しく認識しない。
だから、ハードリンクを見ているFile::Findのようなモジュールが正しく動かない。だから、makeもできないし、cpanもできないので、何にもモジュールがインストールできない。これは困った。
Config.pmを修正して不具合を治す
Config.pmを修正して、不具合を治そう。Config.pmは、以下の場所にあるから「vi」を使って、このファイルを開こう。
vi /usr/lib/perl/5.18.2/Config.pm
ファイルを一番下のほうを見てみる。
そして「dont_use_nlink」の部分を「undef」から「1」に変更しよう。これがハードリンクの情報を使わない設定になります。
tie %Config, 'Config', {
archlibexp => '/usr/lib/perl/5.18',
archname => 'x86_64-linux-gnu-thread-multi',
cc => 'cc',
d_readlink => 'define',
d_symlink => 'define',
dlext => 'so',
dlsrc => 'dl_dlopen.xs',
dont_use_nlink => 1, ###### この部分を「undef」から「1」にしよう ######
exe_ext => '',
inc_version_list => '5.18.1',
intsize => '4',
ldlibpthname => 'LD_LIBRARY_PATH',
libpth => '/usr/local/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib /usr/lib',
osname => 'linux',
osvers => '3.13.0-79-generic',
path_sep => ':',
privlibexp => '/usr/share/perl/5.18',
scriptdir => '/usr/bin',
sitearchexp => '/usr/local/lib/perl/5.18.2',
sitelibexp => '/usr/local/share/perl/5.18.2',
so => 'so',
useithreads => 'define',
usevendorprefix => 'define',
version => '5.18.2',
};これで、Perlが正しく動きます。やったね!