Какие разрешения мне нужно установить Bower on Vagrant в Windows?

Я продолжал сталкиваться с этой ошибкой при установке Bower через NPM на машине под управлением Windows 7 с точной коробкой Ubuntu на Vagrant. Я пробовал каждую комбинацию команд и всегда получал те же или очень похожие ошибки.

Установка локально, глобально, с помощью sudo, без sudo и т.д.

...
npm ERR! Error: EPERM, open '/home/vagrant/tmp/npm-1214-AHbOCwuM/1391873680685-0.36021817452274263/package/build/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/test/simple/test-stream2-readable-empty-buffer-no-eof.js'
npm ERR!  { [Error: EPERM, open '/home/vagrant/tmp/npm-1214-AHbOCwuM/1391873680685-0.36021817452274263/package/build/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/test/simple/test-stream2-readable-empty-buffer-no-eof.js']
npm ERR!   errno: 50,
npm ERR!   code: 'EPERM',
npm ERR!   path: '/home/vagrant/tmp/npm-1214-AHbOCwuM/1391873680685-0.36021817452274263/package/build/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/test/simple/test-stream2-readable-empty-buffer-no-eof.js' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! System Linux 3.2.0-23-generic-pae
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "-g" "bower" "--no-bin-links"
npm ERR! cwd /home/vagrant
npm ERR! node -v v0.10.25
npm ERR! npm -v 1.3.24
npm ERR! path /home/vagrant/tmp/npm-1214-AHbOCwuM/1391873680685-0.36021817452274263/package/build/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/test/simple/test-stream2-readable-empty-buffer-no-eof.js
npm ERR! code EPERM
npm ERR! errno 50
npm ERR! stack Error: EPERM, open '/home/vagrant/tmp/npm-1214-AHbOCwuM/1391873680685-0.36021817452274263/package/build/node_modules/cheerio/node_modules/htmlparser2/node_modules/readable-stream/test/simple/test-stream2-readable-empty-buffer-no-eof.js'
...

EDIT. Как и мой ответ ниже, обратите внимание на каталог файлов + ограничение размера файла при использовании Windows (по-моему, 260 символов)

Мне пришлось установить бродягу в папку непосредственно на моем диске c:/, чтобы преодолеть это ограничение, поскольку некоторые пакеты в конечном итоге имеют вложенные зависимости, заставляя этот предел превышать. Моя проблема заключалась в том, чтобы

Ответ 1

Автоответчик, поскольку я не мог найти решение где-либо еще в StackOverflow

В конечном итоге я получил его для работы, перейдя к корневому пользователю с помощью su root и попытавшись установить глобально снова. По-видимому, просто использовать sudo было недостаточно.

Итак, он стал

[email protected]: npm install -g bower --no-bin-links

EDIT. Помимо этого решения, обратите внимание на каталог файлов + ограничение размера файла при использовании Windows (по-моему, 260 символов)

Мне пришлось инициировать бродячий экземпляр в папке непосредственно на моем диске c:/, чтобы преодолеть это ограничение, поскольку некоторые пакеты в конечном итоге имеют вложенные зависимости, заставляя этот предел превышать. Моя проблема заключалась в том, чтобы

РЕДАКТИРОВАТЬ 2. Повторяя эту проблему снова и снова, я добавлю немного больше информации для людей здесь относительно модулей node и бродячих под Windows.

Теперь я преодолеваю ограничение на пути к файлу, поставив любые длинные сети зависимостей, которые терпят неудачу из-за длины пути (обычно EPERM). Я добавляю один из пакетов в цепочке в свой собственный package.json. Это означает, что цепочка длинных требований разделяется, поскольку npm не переустанавливает пакет глубже в дереве, если он уже установлен.

Просто убедитесь, что вам нужна версия, которая действительна для строки версии для модуля.

Порядок зависимостей в package.json не имеет значения, зависимости разрешаются до того, как все установлено

Ответ 2

Один из оппонентов (бродяга и node.js быстрый совет) нашел решение этой проблемы. В основном вам нужно иметь следующий код в вашем файле бродяг:

config.vm.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]

Это позволит npm создавать символические ссылки для модулей, которые этого требуют. Затем установите пакеты, не форсируя символические ссылки. Итак, при запуске npm install на виртуальной машине, созданной через бродягу, запустите ее как:

sudo npm install --no-bin-link

Это было полезно для меня, когда я установил экспресс  модуль.

Ответ 3

С помощью Vagrant 1.5 в Windows вы можете теперь использовать общие папки rsync или smb, которые не будут иметь этой проблемы.

Ответ 4

Чтобы обойти ограничение длины файла в 260 символов в окнах, что, по-видимому, превзошло слишком мало, вы можете использовать команду npm link.

Это позволит вам использовать node_modules local для вашего проекта. Если вы запустите его на гостевой машине, он установит их на глобальном уровне на гостевой машине, а затем создаст символическую ссылку в ваших проектах node_modules. Таким образом, только символическая ссылка разделяется на хост-машину Windows, а ограничение длины файла 260 не превышено.

Я расскажу об этом более подробно в этом сообщении в блоге здесь.