Windows 공유에 패키지를 설치할 때 Npm 오류


52

내 Windows 8 호스트에서 Ubuntu 12.10을 VMware 게스트로 실행하고 있습니다.

내 Windows 8 호스트에서 폴더를 공유했으며 시작할 때이 항목을 사용하여 Ubuntu 게스트에 마운트됩니다 fstab.

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

공유는 정상적으로 작동하며 nginx와 같은 웹 서버에서 제공 할 수 있습니다.

그러나 npm을 사용하여 node.js 패키지를 설치할 때 문제가있는 것 같습니다. 다음과 같은 오류가 발생합니다.

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$ 

이 문제의 원인은 무엇입니까? , 내가 할 수있는 명령 줄에서 chmod, rmdir어떤 문제없이 sudo를 사용하여 다른 것들 사이에.

답변:


118

--no-bin-links나를 위해 고정 된 상태로 실행 :

npm install --no-bin-links

--no-bin-linksnpm기호 링크를 작성하지 않도록 지시 합니다. 심볼릭 링크를 Windows 공유로 변환하는 방법은 없습니다.


15
200 번 더 투표 할 수 있으면 좋겠다. 이를 통해 Windows에서 Vagrant를 사용할 수 있습니다.
클린트

1
npm install --no-bin-link도 작동합니다.
JamieJag

2
좋은 답변입니다! 그러나 Grunt의 package.json 파일의 "devDependencies"로이 작업을 수행 할 수있는 방법이 있습니까? 멋진 것입니다 :)
Jelmer

1
감사합니다! Vagrant는 Windows 공식 문서에 이것을 넣어야합니다. 내 요점은 모두 당신의 것입니다
htxryan

1
감사합니다, 당신은 내 하루를 구했다, 나는 하루에서 고투하고 있었다
Manjunath Siddappa

6

이 페이지 에서 Windows에서 심볼릭 링크를 만드는 방법 은 공유 폴더를 쓸 수있는 경우에도 이것이 발생한다는 것을 설명하는 데 많은 도움 되었습니다.

이 문제를 해결하려면 VirtualBox에서 심볼릭 링크 기능을 활성화해야합니다.

cmd 프롬프트에서 실행하십시오.

VBoxManage setextradata YOURVMNAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME 1

그런 다음 다음을 확인하십시오.

VBoxManage getextradata YOURVMNAME enumerate

사용자가 관리자 그룹에 속하는 경우 "관리자 권한으로 실행"으로 VirtualBox를 시작하십시오!

기본적으로 Windows 7 보안 정책은 잠재적 보안 위협이므로 심볼릭 링크를 만들 수 없습니다. "secpol.msc"를 실행하고 "로컬 정책-사용자 권한 할당"으로 이동 한 다음 "기호 링크 만들기"에 사용자를 추가하십시오. 나는 그것을 시도하지 않았지만 그 virtualbox가 일반 사용자로 실행될 수있는 후에 가능할 수 있습니다.


3

lorem에 동의하지만 충분하지 않습니다.

  1. Windows에서 Virtualbox '관리자'로 실행하십시오.

  2. 실행했는지 확인하십시오. VBoxManage.exe setextradata YOUR_VM BoxInternal2/SharedFoldersEnableSymlinksCreate/YOUR_SHARED_FOLDER 1

YOUR_VM 및 YOUR_SHARED_FOLDER를 값으로 바꾸십시오. 다음을 통해 값을 확인할 수 있습니다.VBoxManage.exe getextradata boot2docker-vm enumerate

이 문제를 추적 하는 버추얼 박스 버그 가 있습니다 .


1

VirtualBox의 최신 버전은 VirtualBox를 관리자로 시작하면 심볼릭 링크를 허용해야합니다 (오른쪽 클릭 : 관리자로 실행).

방랑 상자에도 동일하게 적용됩니다 : 관리자 권한으로 cmd.exe / PowerShell을 실행하면됩니다.


0

에서 이 NPM 문제 훌륭한 솔루션을 제공 @drmyersii, 난 단지 복사 만 대답을 연결하지 붙여 넣기합니다.

실제 해결책은 Vagrantfile의 Windows 호스트에서 심볼릭 링크를 허용하도록 구성을 설정하는 것입니다. 다음은 예입니다 (VirtualBox에서 실행한다고 가정).

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

이것은 나를 위해 잘 작동했으며 이제 scotchbox 와 함께 gulp를 사용할 수 있습니다 .


0

나 에게이 답변 중 아무것도 효과가 없었습니다. 왜 그런지 잘 모르겠지만 내 점유율이 nfs이기 때문이라고 생각합니다. 따라서 관리자 권한으로 실행하고 setextradata 설정을 변경할 때도 심볼릭 링크를 허용하지 못했습니다. 나는 bin-links에 순종 하는 데 문제 가있는 것처럼 보이는 gulp 및 다른 패키지를 사용하고있었습니다 . 여전히 일부 상징적 인 링크를 만들려고했지만 분명히 실패했습니다. 마지막으로 Github 의이 스레드 는 나를 해킹하여 "솔루션"으로 만들었습니다. 비공유 폴더에 프로젝트를 "간단하게"설치하고이를 NODEPATH로 설정했습니다.

export NODE_PATH=/home/vagrant/PROJECTNAME/node_modules

주의 사항은 전체 서버 및 패키징 업데이트 / 변경 워크 플로에 영향을 미친다는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.