Rasbian 에서 npm Error: EACCES: permission denied

라즈베리파이의 운영체제인 라즈비안(rasbian)에서 전역 옵션(-g)을 통해 모듈을 설치했을 때, Error: EACCES: permission denied 메세지와 함께 수십줄의 에러코드가 뜨면서 제대로 설치가 되지 않을 때가 있다.

예를들어

$ sudo npm install -g onoff

와 같이 전역으로 설치했을 때, 각종 권한문제로 설치가 되지 않는 것이다. 이 문제는 전역 옵션으로 모듈이 설치될 폴더의 권한을 갖고 있지 못했기 때문에 발생한다. 우선, rasbian 에서 node 깔끔하게 삭제하고 재설치하기를 참조하여 재설치해보는 것을 추천하고 그래도 되지 않을 경우 아래와 같은 순서로 진행해본다.

먼저 npm 의 설정파일을 확인한다.
$ npm config get prefix

아마 /usr 라고 뜰 것이다. /usr라고 뜰 경우, 새 폴더를 생성해서 $PATH도 설정해주고 npm 의 설정파일도 변경하여 해결해야하는 것으로 알려져 있는데, 딱히 그렇게 하지 않아도 되는 것 같다. /usr 라고 뜰 경우에, 전역 옵션의 모듈이 설치되는 곳은

/usr/lib/node_modules/.. 이다.

그러므로 이 폴더에 권한을 부여한다.

$ sudo chown -R 아이디 /usr/lib/node_modules

만일 이 폴더가 없다면

$ cd /usr/lib
$ mkdir node_modules

를 통해 폴더를 생성한 뒤에 chown 명령을 진행한다. 권한을 부여한 뒤 다시 한번 전역 설치를 실행해본다.

$ sudo npm install -g 모듈이름

만일 에러 없이 잘 깔렸다면, 다음의 명령어로 확인해본다.

$ npm ls -g --depth=0

/usr/lib
├── express@4.16.2
├── express-generator@4.15.5
├── npm@5.5.1
└── onoff@1.1.8

와 같이 뜨면 잘 설치된 것이다.

Leave a Reply

Your email address will not be published. Required fields are marked *