Errori Npm durante l'installazione di pacchetti su Windows share

51

Ho Ubuntu 12.10 in esecuzione come ospite VMware sul mio host Windows 8.

Ho condiviso una cartella sul mio host di Windows 8 e viene montata all'avvio di Ubuntu utilizzando questa voce in fstab :

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

La condivisione funziona bene ed è in grado di essere servita da un server web come nginx.

Tuttavia, sembra che ci siano problemi quando installo i pacchetti node.js usando npm, ottengo un sacco di errori come questo:

[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$ 

Quale potrebbe essere la causa di questo problema? Dalla riga di comando, posso chmod , rmdir tra l'altro usando sudo senza problemi.

    
posta F21 19.03.2013 - 01:12

6 risposte

115

Esecuzione con --no-bin-links risolto per me:

npm install --no-bin-links

--no-bin-links indica npm per non creare alcun collegamento simbolico. Non c'è un modo (a mia conoscenza) di tradurre i link simbolici in una condivisione di Windows.

    
risposta data F21 19.03.2013 - 01:40
6

Come consentire la creazione di collegamenti simbolici su windows questa pagina mi ha aiutato lotto che spiega che ciò accade anche se la tua cartella condivisa è scrivibile.

Per risolvere il problema, devi abilitare la funzione dei link simbolici in VirtualBox.

Esegui al prompt di cmd:

VBoxManage setextradata YOURVMNAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME 1

Quindi verifica con:

VBoxManage getextradata YOURVMNAME enumerate
  

Se il tuo utente appartiene al gruppo Administrators, avvia VirtualBox con "Esegui come amministratore"!

     

Per impostazione predefinita, i criteri di sicurezza di Windows 7 non consentono la creazione di collegamenti simbolici poiché rappresentano una potenziale minaccia alla sicurezza. Esegui "secpol.msc" e vai a "Criteri locali-Assegnazioni diritti utente" e aggiungi il tuo utente a "Crea collegamenti simbolici". Non l'ho provato, ma potrebbe essere quello dopo che virtualbox potrebbe essere eseguito come utente normale.

    
risposta data matiangul 27.02.2014 - 00:10
3

Accetta il lorem, ma non è sufficiente.

  1. esegui Virtualbox "come amministratore" su Windows.

  2. assicurati di aver eseguito: VBoxManage.exe setextradata YOUR_VM BoxInternal2/SharedFoldersEnableSymlinksCreate/YOUR_SHARED_FOLDER 1

Sostituisci YOUR_VM e YOUR_SHARED_FOLDER con i tuoi valori. Puoi controllare il valore tramite: VBoxManage.exe getextradata boot2docker-vm enumerate

C'è un bug di una virtualbox che monitora questo problema.

    
risposta data hao 23.02.2015 - 17:52
1

Le versioni più recenti di VirtualBox dovrebbero consentire i collegamenti simbolici se si avvia VirtualBox come Adminstrator (tasto destro: Esegui come amministratore).

Lo stesso vale per le scatole vagabonde: esegui semplicemente cmd.exe / PowerShell come amministratore e sei a posto.

    
risposta data lorem monkey 25.06.2014 - 12:27
0

in questo numero di npm @drmyersii offre un'ottima soluzione, farò solo copia e incolla per don ' t collegare solo la risposta.

  

La vera soluzione qui sarebbe quella di impostare la configurazione per consentire   collegamenti simbolici su host Windows nel tuo Vagrantfile. Ecco un esempio   (supponendo che lo stai eseguendo in VirtualBox):

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

questo ha funzionato benissimo per me e ora posso usare gulp con scotchbox .

    
risposta data Edu Ruiz 13.08.2015 - 00:01
0

Per me nessuna di queste risposte ha funzionato. Non sono sicuro del perché, ma credo che sia perché la mia quota è nfs. Quindi non ho potuto ottenere per consentire i collegamenti simbolici anche durante l'esecuzione come amministratore e modificare le impostazioni setextradata. Stavo lavorando con gulp e altri pacchetti che sembrano avere problemi obeying --no-bin-links. È STATO ANCORA tentando di creare alcuni collegamenti simbolici e ovviamente fallendo. Finalmente questo thread su Github mi ha indicato in una "soluzione", per quanto hacky possa essere. Ho "semplicemente" installato il progetto nella mia cartella non condivisa e l'ho impostato come NODEPATH.

export NODE_PATH=/home/vagrant/PROJECTNAME/node_modules

L'avvertenza è che influenzerà l'intero server e il flusso di lavoro di aggiornamento / modifica della confezione.

    
risposta data Melissa 10.11.2015 - 19:09

Leggi altre domande sui tag