Erros NPM ao instalar pacotes no compartilhamento de janelas

51

Eu tenho o Ubuntu 12.10 rodando como convidado VMware no meu host do Windows 8.

Eu compartilhei uma pasta no meu host do Windows 8 e ela é montada no convidado do Ubuntu na inicialização usando essa entrada em fstab :

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

O compartilhamento funciona bem e pode ser atendido por um servidor da Web, como o nginx.

No entanto, parece haver problemas quando eu instalo pacotes node.js usando npm, eu recebo um monte de erros como este:

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$ 

O que pode estar causando esse problema? Na linha de comando, posso chmod , rmdir entre outras coisas usando o sudo sem problemas.

    
por F21 19.03.2013 / 01:12

6 respostas

114

A execução com --no-bin-links corrigiu para mim:

npm install --no-bin-links

--no-bin-links diz npm para não criar links simbólicos. Não há como (do meu conhecimento) traduzir links simbólicos para um compartilhamento do Windows.

    
por F21 19.03.2013 / 01:40
6

Como permitir a criação de links simbólicos nas janelas esta página me ajudou lote que explica que isso acontece mesmo que sua pasta compartilhada seja gravável.

Para corrigir isso, você precisa ativar o recurso de links simbólicos no VirtualBox.

Executar no prompt do cmd:

VBoxManage setextradata YOURVMNAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME 1

Em seguida, verifique por:

VBoxManage getextradata YOURVMNAME enumerate
  

Se o seu usuário pertencer ao grupo Administradores, inicie o VirtualBox com "Executar como Administrador"!

     

Por padrão, a política de segurança do Windows 7 não permite a criação de links simbólicos, pois é uma possível ameaça à segurança. Execute "secpol.msc" e navegue até "Políticas Locais - Designações de Direitos do Usuário" e inclua seu usuário em "Criar links simbólicos". Eu não tentei isso, mas pode ser que depois que virtualbox pode ser executado como um usuário comum.

    
por matiangul 27.02.2014 / 00:10
3
Concorde com lorem, mas não é suficiente.

  1. execute o Virtualbox "como administrador" no Windows.

  2. certifique-se de que você executou: VBoxManage.exe setextradata YOUR_VM BoxInternal2/SharedFoldersEnableSymlinksCreate/YOUR_SHARED_FOLDER 1

Substitua o YOUR_VM e YOUR_SHARED_FOLDER pelos seus valores. Você pode verificar o valor via: VBoxManage.exe getextradata boot2docker-vm enumerate

Existe um bug do virtualbox que acompanha este problema.

    
por hao 23.02.2015 / 17:52
1

As versões mais recentes do VirtualBox devem permitir links simbólicos se você iniciar o VirtualBox como Administrador (clique com o botão direito do mouse: Executar como administrador).

O mesmo se aplica às caixas vagabundas: basta executar o seu cmd.exe / PowerShell como administrador e você está pronto.

    
por lorem monkey 25.06.2014 / 12:27
0

em esta edição do npm @drmyersii oferece uma ótima solução, eu irei apenas copiar e colar para don ' link apenas a resposta.

  

A solução real aqui seria definir sua configuração para permitir   links simbólicos em hosts do Windows em seu Vagrantfile. Aqui está um exemplo   (assumindo que você está rodando no VirtualBox):

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

isso funcionou muito bem para mim e agora posso usar gulp com scotchbox .

    
por Edu Ruiz 13.08.2015 / 00:01
0

Para mim, nenhuma dessas respostas funcionou. Eu não tenho certeza porque, mas eu acredito que é porque a minha parte é nfs. Então eu não consegui para permitir links simbólicos, mesmo quando executando como administrador e alterando as configurações de setextradata. Eu estava trabalhando com gulp e alguns outros pacotes que parecem ter problemas obeying --no-bin-links. Ainda estava tentando criar alguns elos simbólicos e obviamente falhando. Por fim, este tópico no Github me colocou em uma "solução", hacky como pode ser. Eu "simplesmente" instalei o projeto na minha pasta não compartilhada e configurei isso como meu NODEPATH.

export NODE_PATH=/home/vagrant/PROJECTNAME/node_modules

Advertência é que isso afetará todo o servidor e o fluxo de trabalho de atualização / alteração da embalagem.

    
por Melissa 10.11.2015 / 19:09