У меня Ubuntu 12.10 работает в качестве гостя VMware на моем хосте Windows 8.
У меня есть общая папка на моем хосте Windows 8, и она запускается в гостевой системе Ubuntu при запуске, используя эту запись в fstab
:
//myhost/work /work cifs credentials=/home/user/.smbcredentials,noserverino,nounix,uid=user,gid=user,file_mode=0777,dir_mode=0777 0 0
Общий ресурс работает нормально и может обслуживаться веб-сервером, таким как nginx.
Однако, кажется, что при установке пакетов node.js с использованием npm возникают проблемы, и я получаю кучу ошибок, подобных этой:
user@ubuntu:/work/test$ sudo npm install grunt
npm http GET https://registry.npmjs.org/grunt
npm http 304 https://registry.npmjs.org/grunt
...
npm ERR! error rolling back Error: ENOTEMPTY, rmdir '/work/test/node_modules/grunt/node_modules/lodash'
npm ERR! error rolling back grunt@0.4.1 { [Error: ENOTEMPTY, rmdir '/work/test/node_modules/grunt/node_modules/lodash']
npm ERR! error rolling back errno: 53,
npm ERR! error rolling back code: 'ENOTEMPTY',
npm ERR! error rolling back path: '/work/test/node_modules/grunt/node_modules/lodash' }
npm ERR! Error: UNKNOWN, symlink '../which/bin/which'
npm ERR! If you need help, you may report this log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <npm-@googlegroups.com>
npm ERR! System Linux 3.5.0-26-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "grunt"
npm ERR! cwd /work/test
npm ERR! node -v v0.10.0
npm ERR! npm -v 1.2.14
npm ERR! path ../which/bin/which
npm ERR! code UNKNOWN
npm ERR! errno -1
npm ERR! Error: ENOENT, chmod '/work/test/node_modules/grunt/node_modules/findup-sync/test/fixtures/aaa.txt'
npm ERR! If you need help, you may report this log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <npm-@googlegroups.com>
npm ERR! System Linux 3.5.0-26-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "grunt"
npm ERR! cwd /work/test
npm ERR! node -v v0.10.0
npm ERR! npm -v 1.2.14
npm ERR! path /work/test/node_modules/grunt/node_modules/findup-sync/test/fixtures/aaa.txt
npm ERR! fstream_path /work/test/node_modules/grunt/node_modules/findup-sync/test/fixtures/aaa.txt
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! fstream_finish_call chmod
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack /usr/lib/node_modules/npm/node_modules/fstream/lib/writer.js:305:19
npm ERR! fstream_stack Object.oncomplete (fs.js:93:15)
npm ERR! Error: ENOENT, lstat '/work/test/node_modules/grunt/node_modules/minimatch/test/basic.js'
npm ERR! If you need help, you may report this log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <npm-@googlegroups.com>
npm ERR! System Linux 3.5.0-26-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "grunt"
npm ERR! cwd /work/test
npm ERR! node -v v0.10.0
npm ERR! npm -v 1.2.14
npm ERR! path /work/test/node_modules/grunt/node_modules/minimatch/test/basic.js
npm ERR! fstream_path /work/test/node_modules/grunt/node_modules/minimatch/test/basic.js
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack /usr/lib/node_modules/npm/node_modules/fstream/lib/writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:93:15)
npm ERR! Error: ENOENT, lstat '/work/test/node_modules/grunt/node_modules/glob/test/00-setup.js'
npm ERR! If you need help, you may report this log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <npm-@googlegroups.com>
...
npm ERR! not ok code 0
user@ubuntu:/work/test$
Что может быть причиной этой проблемы? Из командной строки я могу chmod
, rmdir
среди прочего, использовать sudo без каких-либо проблем.
Как разрешить создание символических ссылок в Windows, эта страница мне очень помогла, что объясняет, что это происходит, даже если ваша общая папка доступна для записи.
Чтобы это исправить, вам нужно включить функцию символических ссылок в VirtualBox.
Запустите в командной строке cmd:
Затем проверьте:
источник
Согласитесь с Лорем, но этого недостаточно.
Запустите Virtualbox как администратор в Windows.
убедитесь, что вы выполнили:
VBoxManage.exe setextradata YOUR_VM BoxInternal2/SharedFoldersEnableSymlinksCreate/YOUR_SHARED_FOLDER 1
Замените YOUR_VM и YOUR_SHARED_FOLDER вашими значениями. Вы можете проверить значение через:
VBoxManage.exe getextradata boot2docker-vm enumerate
Существует ошибка виртуальной коробки, отслеживающая эту проблему.
источник
В новых версиях VirtualBox должны быть разрешены символические ссылки, если вы запускаете VirtualBox от имени администратора (щелкните правой кнопкой мыши: «Запуск от имени администратора»).
То же самое относится и к бродячим коробкам: просто запустите cmd.exe / PowerShell от имени администратора, и все готово.
источник
в этом выпуске npm @drmyersii дает отличное решение, я буду только копировать и вставлять, чтобы не связывать только ответ.
это отлично работает для меня, и теперь я могу использовать глоток с scotchbox .
источник
Для меня ни один из этих ответов не сработал. Я не уверен, почему, но я верю, что это потому, что моя доля NFS. Поэтому я не мог разрешить использовать символические ссылки даже при запуске от имени администратора и изменении настроек setextradata. Я работал с gulp и некоторыми другими пакетами, у которых, похоже, есть проблемы с подчинением --no-bin-links. Это все еще пытался создать несколько символических ссылок и, очевидно, потерпел неудачу. Наконец, эта тема на Github подтолкнула меня к «решению», каким бы хакерским оно ни было. Я «просто» установил проект в свою папку без общего доступа и установил его как NODEPATH.
Предостережение заключается в том, что это повлияет на весь сервер и процесс обновления / изменения упаковки.
источник