Ошибки Npm при установке пакетов на общем ресурсе Windows

У меня 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 без каких-либо проблем.

1
задан 19 March 2013 в 06:12

5 ответов

Как разрешить создание символических ссылок на окнах, эта страница очень помогла мне объяснить, что это происходит, даже если ваша общая папка доступна для записи.

Чтобы исправить это, вам нужно включить функцию символических ссылок в VirtualBox. [ ! d2]

Выполнить в командной строке cmd:

VBoxManage setextradata YOURVMNAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME 1

Затем проверьте:

VBoxManage getextradata YOURVMNAME enumerate
Если ваш пользователь принадлежит группе «Администраторы», запустите VirtualBox с помощью «Запуск от имени администратора» «! По умолчанию политика безопасности Windows 7 не позволяет создавать символические ссылки, так как это потенциальная угроза безопасности. Запустите «secpol.msc» и перейдите к «Локальные политики - назначения прав пользователя» и добавьте пользователя в «Создание символических ссылок». Я не пробовал, но может быть, что после этого виртуальный бокс можно запустить как обычный пользователь.
6
ответ дан 25 May 2018 в 00:23

Согласитесь с 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

Существует ошибка в виртуальном боксе, отслеживающая эту проблему.

3
ответ дан 25 May 2018 в 00:23

Новые версии VirtualBox должны разрешать символические ссылки, если вы запустите VirtualBox как Adminstrator (щелкните правой кнопкой мыши: Запуск от имени администратора).

То же самое относится к бродячим блокам: просто запустите ваш cmd.exe / PowerShell в качестве администратора и вам хорошо идти.

1
ответ дан 25 May 2018 в 00:23

в этом выпуске npm @drmyersii дает отличное решение, я только копирую и вставляю, чтобы не ссылаться только на ответ.

Реальное решение здесь состояло бы в том, чтобы настроить вашу конфигурацию, чтобы разрешить символические ссылки на хостах Windows в вашем Vagrantfile. Вот пример (предполагая, что вы его запускаете в VirtualBox):
config.vm.provider "virtualbox" do |v|
    v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"]
end

это отлично поработало для меня, и теперь я могу использовать gulp с этой проблемой npm . [!d4 ]

0
ответ дан 25 May 2018 в 00:23

Для меня ни один из этих ответов не работал. Я не уверен, почему, но я считаю, что это потому, что моя доля - nfs. Поэтому я не мог заставить его разрешать символические ссылки даже при работе в качестве администратора и изменения настроек setextradata. Я работал с gulp и некоторыми другими пакетами, которые, похоже, имеют проблемы, связанные с -no-bin-links. Было ВСЕ ЕЩЕ пытаться создавать некоторые символические ссылки и, очевидно, терпеть неудачу. Наконец эта нить на Github показала мне «решение», как бы то ни было. Я «просто» установил проект в своей не общей папке и установил это как мой NODEPATH.

export NODE_PATH=/home/vagrant/PROJECTNAME/node_modules

Предостережение заключается в том, что это повлияет на весь сервер и рабочий процесс обновления / изменения упаковки. [ ! d4]

0
ответ дан 25 May 2018 в 00:23

Другие вопросы по тегам:

Похожие вопросы: