"wd에서 실행할 수 없음"으로 인해 Npm 설치가 실패했습니다.


153

Node 0.8.14가 이미 설치된 새로운 Ubuntu 12.04 인스턴스에서 노드 환경을 설정하려고하는데 실행하려고 할 때 문제가 발생했습니다 npm install. 따라서 시도 할 때 npm install루트 또는 관리자로 실행해야한다고 말합니다.

Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script'
npm ERR!  { [Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/usr/local/lib/node_modules/coffee-script',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/usr/local/lib/node_modules/coffee-script',
npm ERR!   fstream_class: 'DirWriter',
npm ERR!   fstream_stack: 
npm ERR!    [ 'DirWriter._create                 (/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23)',
npm ERR!      '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53',
npm ERR!      'Object.oncomplete (fs.js:297:15)' ] }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

그러나 sudo로 실행하려고하면 다음과 같이 말합니다.

npm WARN cannot run in wd PackNodeDev@0.0.1-166 npm install -g coffee-script node-gyp (wd=/home/ubuntu/PackNode)

내 package.json에는 다음 스크립트가 포함되어 있습니다.

"scripts": {
    "preinstall": "npm install -g coffee-script node-gyp",
    "start": "node server.js",
    "test": "mocha --require should --compilers coffee:coffee-script --colors"
 },

나머지 devdependencies는 내 컴퓨터 (Mac)에 올바르게 설치했기 때문에 유효합니다. 왜 이런 일이 일어나는지 아무도 모르는 사람이 있습니까?

답변:


231

문서는 (도 말한다 여기 )

루트 권한으로 npm을 호출 한 경우 uid가 user구성에 지정된 사용자 계정 또는 uid로 변경 되며 기본값 은로 설정됩니다 nobody. unsafe-perm루트 권한으로 스크립트를 실행 하도록 플래그를 설정하십시오 .

옵션은 다음과 같습니다.

  1. 실행 npm install--unsafe-perm플래그 :

    [sudo] npm install --unsafe-perm
  2. unsafe-perm깃발을 추가 하십시오 package.json:

    "config": {
        "unsafe-perm":true
    }
  3. preinstall스크립트를 사용하여 전역 모듈을 설치하고 별도로 설치 한 다음 npm install루트 권한없이 일반 모듈을 실행하십시오 .

    sudo npm install -g coffee-script node-gyp
    npm install

관련 :


2
지금까지 이것을 보지 못해서 죄송합니다. 전에 "안전하지 않은-펌"을 시도했지만 작동하지 않았습니다. 문제는 여전히 존재합니다
EH

10
이것은 나를 위해 작동합니다 : sudo npm install --unsafe-perm. 그러나 package.json에 sudo npm install추가했지만 그렇지 않습니다 "unsafe-perm":true... 이유를 모르겠습니다
Dmitry Pashkevich

8
package.json의 "config"속성에 추가하면 실제로 "npm_package_config_unsafe_perm"이 설정되므로 옵션 2가 작동하지 않습니다. 참조 : stackoverflow.com/questions/28763958/...
justmoon

'unsafe-perm': 나도 참 실패했습니다. 부끄러운 일이 아닌 원인을 멍청하게 만들고, 기이하고, 놀랍고, 적대적인 것을주는 대신 오류 메시지에 오류와 컨텍스트 (uid 변경 포함)를주지 않았습니다.
android.weasel

npm install --unsafe-perm나를 위해 일하는 동안 기본 user구성 변경에 대한 의미를 따르려고했습니다 . 그래서 나는 루트 사용자 파일 에 해당 항목을 추가하는 npm set user my_userand을 수행했습니다 . 그러나 문제는 폴더 자체와 하위 폴더가 여전히 루트에 의해 소유되어 있기 때문에 도움이되지 않는다는 것입니다. 루트가 소유하지 않은 방법을 알 수 없었습니다. npm set group my_group.npmrcnode_modules
fulv

53

나를 위해 일한 유일한 것은 다음을 .npmrc포함 하는 파일을 추가하는 것입니다 .

unsafe-perm = true

동일한 구성을 추가해도 package.json아무런 영향이 없습니다.


36
docker에서 :RUN npm set unsafe-perm true
Alexander Mills

WSL을 사용하는 경우 set unsafe-perm true를 입력하십시오. 도움이 될 것입니다
Stas Panyukov

26

루트 사용자를 사용하여 CentO를 실행하는 개인 서버에 nodejs 앱을 게시하려고 할 때도 같은 문제가 발생했습니다. package.json 파일의 "postinstall": "./node_modules/bower/bin/bower install"에서 동일한 오류가 발생하므로 두 가지 옵션을 모두 사용하여 오류를 피하는 것이 좋습니다.

1 : bower 설치 명령에 --allow-root 옵션 사용

"postinstall": "./node_modules/bower/bin/bower --allow-root install"

2 : npm install 명령에 --unsafe-perm 옵션 사용

npm install --unsafe-perm

12

OP는 처음이 질문을 한 이후 노드에 대해 더 많이 배웠습니다. Dmitry의 답변이 매우 도움이되었지만 궁극적으로 올바른 권한을 가진 노드를 설치하는 것이 나에게 도움이되었습니다.

패키지 관리자를 사용하여 노드를 설치하지 말고 일반 권한이있는 로컬 디렉토리에 상주하도록 직접 컴파일하는 것이 좋습니다.

이 기사에서는이를 수행하는 방법에 대한 매우 명확한 단계별 지침을 제공합니다.

https://www.digitalocean.com/community/tutorials/how-to-install-an-upstream-version-of-node-js-on-ubuntu-12-04


2

나는의 소유권 변경하여 고정 /usr/local하고 ~/Users/user-name그래서 같은를 :

sudo chown -R my_name /usr/local

이것은 내가없이 모든 것을 할 수있게했습니다. sudo

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