У меня Ubuntu 12.10 работает как гостевой VMware на моем хосте Windows 8.
Я поделился папкой на моем хосте Windows 8 и монтируется в гостевой Ubuntu при запуске, используя эту запись в [ f3]:
//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 без каких-либо проблем.
Как разрешить создание символических ссылок на окнах, эта страница очень помогла мне объяснить, что это происходит, даже если ваша общая папка доступна для записи.
Чтобы исправить это, вам нужно включить функцию символических ссылок в VirtualBox. [ ! d2]
Выполнить в командной строке cmd:
VBoxManage setextradata YOURVMNAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME 1
Затем проверьте:
VBoxManage getextradata YOURVMNAME enumerate
Если ваш пользователь принадлежит группе «Администраторы», запустите VirtualBox с помощью «Запуск от имени администратора» «! По умолчанию политика безопасности Windows 7 не позволяет создавать символические ссылки, так как это потенциальная угроза безопасности. Запустите «secpol.msc» и перейдите к «Локальные политики - назначения прав пользователя» и добавьте пользователя в «Создание символических ссылок». Я не пробовал, но может быть, что после этого виртуальный бокс можно запустить как обычный пользователь. Согласитесь с lorem, но этого недостаточно.
запускает 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 как Adminstrator (щелкните правой кнопкой мыши: Запуск от имени администратора).
То же самое относится к бродячим блокам: просто запустите ваш cmd.exe / PowerShell в качестве администратора и вам хорошо идти.
в этом выпуске npm @drmyersii дает отличное решение, я только копирую и вставляю, чтобы не ссылаться только на ответ.
Реальное решение здесь состояло бы в том, чтобы настроить вашу конфигурацию, чтобы разрешить символические ссылки на хостах Windows в вашем Vagrantfile. Вот пример (предполагая, что вы его запускаете в VirtualBox):config.vm.provider "virtualbox" do |v|
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"]
end
это отлично поработало для меня, и теперь я могу использовать gulp с этой проблемой npm . [!d4 ]
Для меня ни один из этих ответов не работал. Я не уверен, почему, но я считаю, что это потому, что моя доля - nfs. Поэтому я не мог заставить его разрешать символические ссылки даже при работе в качестве администратора и изменения настроек setextradata. Я работал с gulp и некоторыми другими пакетами, которые, похоже, имеют проблемы, связанные с -no-bin-links. Было ВСЕ ЕЩЕ пытаться создавать некоторые символические ссылки и, очевидно, терпеть неудачу. Наконец эта нить на Github показала мне «решение», как бы то ни было. Я «просто» установил проект в своей не общей папке и установил это как мой NODEPATH.
export NODE_PATH=/home/vagrant/PROJECTNAME/node_modules
Предостережение заключается в том, что это повлияет на весь сервер и рабочий процесс обновления / изменения упаковки. [ ! d4]