今天更新 Blog 產生器 HEXO 時發現我要安裝 NPM 套件時會發生很詭異的錯誤…
TL;DR
使用虛擬機分享資料夾,例如我是用 VirtualBox 分享 windows 資料夾給 Debian。系統在建立 Symlink 的時候會有問題。
以下是錯誤訊息
npm ERR! error rolling back Error: ETXTBSY, unlink '/media/sf_project/imZack.github.io/node_modul |
丟上去 google,嗯!我不是孤單的…簡單的抓了一個答案來看得到的結果是:npm install
後面加入參數 --no-bin-link
依據 npm 官方文件表示:
The –no-bin-links argument will prevent npm from creating symlinks for any binaries the package might contain.
也就是說避免 npm 去幫你產生 symlinks,這時我才忽然想起我的環境是 windows 資料夾透過 virtualbox 的 shared folder 分享到 debian 難怪不能用 symlinks…
這裡似乎有一篇解法,將 virtual box 跑在 administrator 下然後在 VM 內設定下面參數VBoxManage setextradata YOURVMNAME VBoxInternal2/
SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME 1
不過我後來還是將這部分回到 windows 上面完成…哈
參考資料
Nodejs + npm, installing modules on ntfs partition
“Error: ETXTBSY” when installing the package with npm (gruntjs, gulp) at VirtualBox