問題
Windows10+VirtualBox(CentOS7)で共有フォルダにシンボリックリンクが作れなくてnpm installが失敗する。
解決方法
vboxmanage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1
VM_NAME
はvboxmanage list vms
で確認可能。
SHARE_NAME
は設定の共有フォルダから確認可能。
vboxmanage
はVirtualBoxのインストール先にパスが通ってないと駄目で、俺ならC:\Program Files\Oracle\VirtualBox
なのでvboxmanage
を"C:\Program Files\Oracle\VirtualBox\vboxmanage.exe"
に置換して実行する。スペースを含む文字列は引用符でくくるのはよく知られる通り。以下でも同様にする。
設定されたかは以下で確認。
vBoxmanage getextradata VM_NAME enumerate
そして起動。
vboxmanage startvm VM_NAME --type headless
これで起動するとシンボリックリンクが作れるようになってる。
非管理者権限で起動したVirtualBoxのGUIから起動すると設定が無効になるようなので注意。
念の為npm install
についても、共有フォルダ内には、VM内の領域へのシンボリックリンクを1つだけ張って、その参照先にインストールするようにした。
mkdir ~/node_modules
cd PROJECT_ROOT
ln -s ~/node_modules/ node_modules
あと npm install
はシンボリック対策として別のところで見つけたオプションもつけた。
npm install --no-bin-links
文献
http://var.blog.jp/archives/75786730.html
https://kokufu.blogspot.com/2016/01/virtualbox-shared-folders.html
https://github.com/npm/npm/issues/9953#issuecomment-242827385