Among Us - Crewmates
 

[npm][Mac] npm install -g yarn 오류 해결방안 / npm ERR! code EACCES 해결방안

728x90

NPM install permission 에러

 

VScode 의 터미널에서 글로벌로  yarn  설치를 시도했다.

npm install -g yarn

 

사실 node js 를 먼저 설치했던 이력이 있다면, yarn 과 비슷한 npm 이라는 기본적인 Package Manager가 자동으로 설치가 되어있긴 하다.

 

그럼에도 yarn 을 설치하는 까닭

yarn 이 라이브러리를 설치해주고 관리해주는 Package Manager 의 일종이면서,

dependency 관리나 혹은 라이브러리들끼리의 충돌을 방지해주기 때문에 보다 더 성능이 좋다.

 

 

npm install permission 에러

순조롭게 설치가 진행되겠거니 싶었지만,

보기만 해도 가슴이 두근거리게 되는 빨간글씨의 에러가 발생했다.

 

npm ERR! code EACCES

npm ERR! syscall mkdir

npm ERR! path /usr/local/lib/node_modules/yarn

npm ERR! errno -13

 

이유?

 

➡️ 대부분은 공용 머신이거나 mac 이용환경에서 발생하고,

npm 이 global 스콥 (-g) 으로 파일을 쓰려는 폴더에 접근 권한이 없기 때문에 발생하게 된다.

 

 

해결방안 (1, 2, 3)

해결하기에 앞서 우선, npm의 디렉터리 상태를 확인해야 한다.

npm config get prefix
  • /usr/local 로 뜨는 경우(대부분의 경우일 것이다.) ➡️ 해결방안 1
  • /usr 로 뜨는 경우 ➡️  해결방안 2

 

 해결방안 1 

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

위 코드에 마우스를 올리면 버튼 하나가 생기는데, 복사할 수 있으니 터미널에 붙여넣기 하면 된다.

하위 폴더의 권한까지 모두 변경하게 된다.

다시 처음 install 코드를 입력하면 이제는 에러 없이 설치가 잘 될 것이다.

 

 해결방안 2 

이 경우는 공통 디렉터리의 owner를 변경하지 않아야한다.

먼저 hidden 디렉터리를 생성하고, 차근차근 따라해보도록 한다.

 

1) global 설치를 위한 디렉토리를 생성한다.

mkdir ~/.npm-global

 

2) 새 디렉토리 경로를 사용하도록 npm을 구성(config)한다.

npm config set prefix '~/.npm-global'

 

3) ~/.profile 파일을 열거나 생성한 뒤, export Path 구문을 추가한다.

  • ~/.profile 파일 수정
vim ~/.profile
  • i 키를 누르면 입력모드로 바뀌고, 터미널 하단에 INSERT 라는 글자가 뜬다.
  • 맨 위에 이 구문을 입력한다.
export PATH=~/.npm-global/bin:$PATH
  • :wq 를 눌러서 저장 및 종료한다. (write & quit)

 

4) 시스템 변수를 업데이트 한다.

source ~/.profile

 

5) sudo 명령어를 사용하지 않고 설치하고 싶은 package를 다운로드 해본다.

( yarn 을 설치하려고 하기 때문에, -g 다음 yarn을 적어보았다. 다른 패키지를 설치하고자 한다면 yarn 대신에 입력하면 된다. )

npm install -g yarn

 

p.s) 만약 ~/.profile 파일을 수정하고 싶지 않다면, 2) 3) 4) 의 과정 대신에 ENV 변수를 사용할 수도 있다.

NPM\_CONFIG\_PREFIX=~/.npm-global

 

 해결방안 3 

brew install node

해결방안 1, 2 는 사용자가 직접 권한을 설정하는 것이다.

node를 mac os에 처음 설치하는 것이라면, homebrew 를 이용해도 좋다.

homebrew는 사용자 권한과 default 디렉토리를 적절하게 알아서 설정해준다.

 

 


나는  해결방안 1  를 이용해서 해결했다.

 

npm config get prefix
sudo chown -R
npm install -g

정상적으로 설치 완료 !

 

 

참고 1 : https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally

참고 2 : https://enyobook.wordpress.com/2016/08/05/npm-permission-%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0/

참고 3 : https://devhealer.tistory.com/27

728x90
반응형