it-swarm-es.com

Errores de NPM al instalar paquetes en Windows Share

Tengo Ubuntu 12.10 ejecutándose como invitado de VMware en mi Windows 8 Host.

He compartido una carpeta en mi Windows 8 Host y está montada en el invitado de Ubuntu al inicio usando esta entrada en fstab:

//myhost/work /work cifs credentials=/home/user/.smbcredentials,noserverino,nounix,uid=user,gid=user,file_mode=0777,dir_mode=0777 0 0 

El recurso compartido funciona bien y puede ser atendido por un servidor web como nginx.

Sin embargo, parece haber problemas cuando instalo los paquetes node.js usando npm, obtengo un montón de errores como este:

[email protected]:/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  [email protected] { [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!     <[email protected]>

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!     <[email protected]>

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!     <[email protected]>

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!     <[email protected]>
...
npm ERR! not ok code 0
[email protected]:/work/test$ 

¿Qué podría estar causando este problema? Desde la línea de comando, puedo chmod, rmdir entre otras cosas usando Sudo sin ningún problema.

52
F21

Ejecutar con --no-bin-links lo arregló para mí:

npm install --no-bin-links

--no-bin-links le dice a npm que no cree ningún enlace simbólico. No hay una manera (que yo sepa) de traducir enlaces simbólicos a un recurso compartido de Windows.

117
F21

Cómo permitir la creación de enlaces simbólicos en Windows esta página me ayudó mucho, lo que explica que esto suceda incluso si su carpeta compartida es editable.

Para solucionarlo, debe habilitar la función de enlaces simbólicos en VirtualBox.

Ejecutar en cmd Solicitud:

VBoxManage setextradata YOURVMNAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME 1

Luego verifique por:

VBoxManage getextradata YOURVMNAME enumerate

Si su usuario pertenece al grupo de Administradores, inicie VirtualBox con "Ejecutar como administrador".

Por defecto, la política de seguridad de Windows 7 no permite crear enlaces simbólicos, ya que es una amenaza potencial para la seguridad. Ejecute "secpol.msc" y vaya a "Políticas locales-Asignaciones de derechos de usuario" y agregue su usuario a "Crear enlaces simbólicos". No intenté eso, pero podría ser eso después de que virtualbox podría ejecutarse como un usuario normal.

6
matiangul

De acuerdo con lorem, pero no es suficiente.

  1. ejecute Virtualbox 'como administrador administrativo' en Windows.

  2. asegúrese de ejecutar: VBoxManage.exe setextradata YOUR_VM BoxInternal2/SharedFoldersEnableSymlinksCreate/YOUR_SHARED_FOLDER 1

Reemplace YOUR_VM y YOUR_SHARED_FOLDER con sus valores. Puede verificar el valor a través de: VBoxManage.exe getextradata boot2docker-vm enumerate

Hay n error de virtualbox seguimiento de este problema.

3
hao

Las versiones más recientes de VirtualBox deberían permitir enlaces simbólicos si inicia VirtualBox como Adminstrator (clic derecho: Ejecutar como administrador).

Lo mismo se aplica a los cuadros vagabundos: simplemente ejecute cmd.exe/PowerShell como administrador y listo.

1
lorem monkey

en este problema npm @drmyersii dar una gran solución, solo copiaré y pegaré para no vincular solo la respuesta.

La solución real aquí sería establecer su configuración para permitir enlaces simbólicos en los hosts de Windows en su Vagrantfile. Aquí hay un ejemplo (suponiendo que lo esté ejecutando en VirtualBox):

config.vm.provider "virtualbox" do |v|
    v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"]
end

esto funcionó muy bien para mí y ahora puedo usar trago con scotchbox .

0
Edu Ruiz

Para mí ninguna de estas respuestas funcionó. No estoy seguro de por qué, pero creo que es porque mi parte es nfs. Por lo tanto, no pude permitir que los enlaces simbólicos incluso cuando se ejecutaba como Administrador y cambiara la configuración de los setextradatos. Estaba trabajando con Gulp y algunos otros paquetes que parecen tener problemasobedeciendo --no-bin-links. Todavía intentaba crear algunos enlaces simbólicos y obviamente fallaba. Finalmente esto hilo en Github me dio una idea de una "solución", por muy halagado que sea. "Simplemente" instalé el proyecto en mi carpeta no compartida y lo configuré como mi NODEPATH.

export NODE_PATH=/home/vagrant/PROJECTNAME/node_modules

La advertencia es que afectará a todo el servidor y al flujo de trabajo de actualizar/cambiar el paquete.

0
Melissa