Eu tenho o Ubuntu 12.10 em execução como convidado do VMware no meu host do Windows 8.
Compartilhei uma pasta no meu Windows 8 Host e ela é montada no convidado Ubuntu na inicialização usando esta 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 servido por um servidor da web como o nginx.
No entanto, parece haver problemas ao instalar pacotes node.js usando o npm, recebo vários 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 [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
user@ubuntu:/work/test$
O que poderia estar causando este problema? Na linha de comando, posso chmod
, rmdir
entre outras coisas, usar o sudo sem problemas.
Como permitir a criação de links simbólicos no Windows, esta página me ajudou muito, o que explica que isso acontece mesmo que sua pasta compartilhada seja gravável.
Para corrigi-lo, é necessário ativar o recurso de links simbólicos no VirtualBox.
Execute no prompt do cmd:
Em seguida, verifique por:
fonte
Concorde com o lorem, mas não é suficiente.
execute o Virtualbox 'como administrador' no Windows.
certifique-se de executar:
VBoxManage.exe setextradata YOUR_VM BoxInternal2/SharedFoldersEnableSymlinksCreate/YOUR_SHARED_FOLDER 1
Substitua YOUR_VM e YOUR_SHARED_FOLDER pelos seus valores. Você pode verificar o valor via:
VBoxManage.exe getextradata boot2docker-vm enumerate
Há um bug no Virtualbox que rastreia esse problema.
fonte
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 vagrantes: basta executar o cmd.exe / PowerShell como administrador e você estará pronto.
fonte
no presente npm questão @drmyersii dar uma grande solução, eu só vou copiar e colar para não ligar somente a resposta.
isso funcionou muito bem para mim e agora eu posso usar gulp com scotchbox .
fonte
Para mim, nenhuma dessas respostas funcionou. Não sei por que, mas acredito que é porque minha parte é nfs. Portanto, não consegui permitir links simbólicos mesmo quando executando como administrador e alterando as configurações de setextradata. Eu estava trabalhando com o gulp e alguns outros pacotes que parecem ter problemas para obedecer --no-bin-links. Ainda estava tentando criar alguns links simbólicos e obviamente falhando. Finalmente, este tópico no Github me mostrou uma "solução", por mais hacky que possa ser. "Simplesmente" instalei o projeto na minha pasta não compartilhada e defini-o como meu NODEPATH.
Advertência é que isso afetará todo o servidor e o fluxo de trabalho de atualização / alteração da embalagem.
fonte