Npm erreurs lors de l'installation des packages sur le partage Windows

51

Ubuntu 12.10 est exécuté en tant qu'invité VMware sur mon hôte Windows 8.

J'ai partagé un dossier sur mon hôte Windows 8 et il est monté dans l'invité Ubuntu au démarrage en utilisant cette entrée dans fstab :

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

Le partage fonctionne bien et peut être servi par un serveur Web tel que nginx.

Cependant, il semble y avoir des problèmes lorsque j'installe les paquets node.js en utilisant npm, je reçois un tas d'erreurs comme ceci:

[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'est-ce qui pourrait causer ce problème? À partir de la ligne de commande, je peux chmod , rmdir , entre autres, utiliser sudo sans problème.

    
posée F21 19.03.2013 - 01:12
la source

6 réponses

115

Exécution avec --no-bin-links corrigé pour moi:

npm install --no-bin-links

--no-bin-links indique à npm de ne créer aucun lien symbolique. Il n’existe aucun moyen (à ma connaissance) de traduire des liens symboliques vers un partage Windows.

    
réponse donnée F21 19.03.2013 - 01:40
la source
6

Comment autoriser la création de liens symboliques sur les fenêtres cette page m'a aidé beaucoup ce qui explique que cela se produit même si votre dossier partagé est accessible en écriture.

Pour résoudre ce problème, vous devez activer la fonctionnalité de liens symboliques dans VirtualBox.

Exécuter à l'invite cmd:

VBoxManage setextradata YOURVMNAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME 1

Puis vérifiez par:

VBoxManage getextradata YOURVMNAME enumerate
  

Si votre utilisateur appartient au groupe Administrateurs, démarrez VirtualBox avec "Exécuter en tant qu’administrateur"!

     

Par défaut, la stratégie de sécurité de Windows 7 n'autorise pas la création de liens symboliques, car elle constitue une menace potentielle pour la sécurité. Exécutez "secpol.msc" et accédez à "Local Policies-User Rights Assignments" et ajoutez votre utilisateur à "Create symbolic links". Je ne l'ai pas essayé mais cela pourrait être après que la virtualbox pourrait être exécutée en tant qu'utilisateur régulier.

    
réponse donnée matiangul 27.02.2014 - 00:10
la source
3

D'accord avec Lorem, mais ce n'est pas suffisant.

  1. exécutez Virtualbox "en tant qu'administrateur" sous Windows.

  2. assurez-vous d'avoir exécuté: VBoxManage.exe setextradata YOUR_VM BoxInternal2/SharedFoldersEnableSymlinksCreate/YOUR_SHARED_FOLDER 1

Remplacez YOUR_VM et YOUR_SHARED_FOLDER par vos valeurs. Vous pouvez vérifier la valeur via: VBoxManage.exe getextradata boot2docker-vm enumerate

Il y a un bug de boîte virtuelle pour suivre ce problème.

    
réponse donnée hao 23.02.2015 - 17:52
la source
1

Les nouvelles versions de VirtualBox devraient autoriser les liens symboliques si vous démarrez VirtualBox en tant qu'administrateur (clic droit: Exécuter en tant qu'administrateur).

La même chose s'applique aux boîtes vagabondes: lancez simplement votre cmd.exe / PowerShell en tant qu'administrateur et vous êtes prêt à partir.

    
réponse donnée lorem monkey 25.06.2014 - 12:27
la source
0

dans ce numéro npm , @drmyersii est une excellente solution, je ne ferai que copier-coller sur don ' t relier la réponse uniquement.

  

La vraie solution ici serait de définir votre configuration pour autoriser   liens symboliques sur les hôtes Windows de votre fichier Vagrant. Voici un exemple   (en supposant que vous l'exécutez dans VirtualBox):

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

Cela a bien fonctionné pour moi et maintenant je peux utiliser gulp avec scotchbox .

    
réponse donnée Edu Ruiz 13.08.2015 - 00:01
la source
0

Pour moi, aucune de ces réponses n’a fonctionné. Je ne sais pas pourquoi mais je crois que c'est parce que ma part est nfs. Je ne pouvais donc pas le faire autoriser les liens symboliques, même en tant qu'administrateur et en modifiant les paramètres de setextradata. Je travaillais avec gulp et d'autres paquets qui semblent avoir des problèmes obeying --no-bin-links. Il essayait TOUJOURS de créer des liens symboliques et de toute évidence échouer. Enfin, ce fil sur Github m'a mis dans une "solution", aussi imprécise que cela puisse paraître. J'ai "simplement" installé le projet dans mon dossier non partagé et défini comme mon NODEPATH.

export NODE_PATH=/home/vagrant/PROJECTNAME/node_modules

Attention, cela affectera l’ensemble du serveur et le flux de travail de la mise à jour / de la modification de l’emballage.

    
réponse donnée Melissa 10.11.2015 - 19:09
la source

Lire d'autres questions sur les étiquettes