2013-02-20 1 views
5

내가 예를 들어, NFS 마운트 홈 폴더를 가지고 NPM을 통해 글로벌 패키지를 설정하려고 (NFS 장착 홈을 피하기 위해) sudo는 아래에 내가 (NPM의 외부에서 시도) 원격 서버대체 위치는

npm ERR! Error: EACCES, open '/home/explunit/.npm/a02a2468-jshint.lock' 
npm ERR! { [Error: EACCES, open '/home/explunit/.npm/a02a2468-jshint.lock'] 
npm ERR! errno: 3, 
npm ERR! code: 'EACCES', 
npm ERR! path: '/home/explunit/.npm/a02a2468-jshint.lock' } 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator. 

에 아무것도 만들 수 없습니다 오류 때문에 반드시 누군가 2 분을 따라 와서는 sudo를 사용하지 않는 "말할 것이다 해요 - 실제 개발자는 노드/npm없이 어떻게 설정해야하는지 이해할 것입니다! ", 그러나 a) 이것이 어떻게 작동하도록 설계되었는지는 분명하지 않습니다. npm readme은 sudo를 제안하고 b)이 경우에는 특정 사용자 (서버를 빌드하는 사람)에게 묶여지기를 정말로 원하지 않는다.

그래서 진짜 질문은 npm이 내 홈 폴더를 무시하도록하는 방법이라고 생각한다. .npm을 위해 다른 위치를 사용 하시겠습니까?

+0

홈 디렉토리의'.npm'을 쓰기 불가능하게 만들 수있는 non-nfs 위치의 심볼릭 링크로 바꿀 수 있습니다. –

답변

7

캐시가있는 위치를 변경하십시오.

npm config set cache /SOMEWHERE/ELSE 

/SOMEWHERE/ELSE는 명령을 실행하는 사용자가 쓸 수있는 어딘가에 있어야합니다.

+0

고맙지 만 sudo가 사용자의 로컬 npm 설정을보고 있지 않기 때문에 여전히 "sudo npm install -g some_package"시나리오에서 해결되지 않는 것 같습니다. – explunit

+0

sudo npm -g config get cache는 여전히 나를 제공합니다 '~/.npm'. 캐시는 사용자가 다시 다운로드해야하는 것을 최소화하기위한 목적으로 만 존재합니다. 그것을 시도했는데 도움이되지 않았습니까? –

+0

예, 위의 원래 질문에서 나온 것과 동일한 오류가 발생했습니다. 그러나, 명령의 마지막에 넣을 수있는 전역이있는 것처럼 보입니다.이 명령은 sudo 환경 설정에도 적용됩니다. 다른 곳에서 tmp를 설정하기 위해서도 비슷한 명령이 필요합니다. – explunit