toggle menu

[NodeJS] Ubuntu 에 node.js 와 npm 설치하는 방법

2015. 8. 6. 10:24 Node.js

들어가며


개발 환경 구성을 위해 ubuntu 에 node.js 를 설치할 때 apt 로 설치해줄 수도 있지만, 비교적 최신 버전이 느리게 올라오기 때문에 nodesource 를 통해서 설치하는 방법에 대해서 정리해둔다. 특히 npm 으로 global module을 설치할 때 나는 EACCES 오류에 대해서 정리해둔다.





nodesource 를 통해 node.js와 npm 설치하기


nodesource 에 접속하면 친절하게 데비안 계열과 레드햇 계열에서 어떻게 설치해야하는지 자세하게 설명이 나와있다.


node.js v6.x를 설치하는 방법은 아래와 같다.


# 데비안 계열(우분투)에서 일반 사용자 계정인 경우,
$ sudo apt-get install curl
$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
$ sudo apt-get install -y nodejs

# 데비안 계열(우분투)에서 루트인 경우,
$ apt-get install curl
$ curl -sL https://deb.nodesource.com/setup_6.x | bash -
$ apt-get install -y nodejs


일반 사용자인 경우와 루트인 경우는 사실 sudo 로 실행하느냐 차이 정도만 있다.


이와 유사하게 node.js v0.10을 설치할 때는 6.x 를 0.10으로 바꾸어주면 된다. 4.x 버전은 이 부분을 4.x 라고 쓰면 4 버전대 중에서 최신으로 설치된다.


위와 같이 실행해주고 나면, node.js 와 npm이 모두 설치된다. 





npm에서 global 로 module을 설치할 때 발생하는 권한 오류


단 세 줄로 node.js와 npm이 모두 설치되었지만, npm 에서 모듈을 global 로 설치할 때 아래와 같은 권한 오류가 발생한다.


npm ERR! tar.unpack untar error /home/andrew/.npm/gulp/3.9.0/package.tgz
npm ERR! Linux 3.19.0-25-generic
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "gulp" "-g"
npm ERR! node v0.12.7
npm ERR! npm  v2.11.3
npm ERR! path /usr/lib/node_modules/gulp
npm ERR! code EACCES
npm ERR! errno -13

npm ERR! Error: EACCES, mkdir '/usr/lib/node_modules/gulp'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES, mkdir '/usr/lib/node_modules/gulp']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/usr/lib/node_modules/gulp',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/usr/lib/node_modules/gulp',
npm ERR!   fstream_class: 'DirWriter',
npm ERR!   fstream_stack:
npm ERR!    [ '/usr/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:35:25',
npm ERR!      '/usr/lib/node_modules/npm/node_modules/mkdirp/index.js:47:53',
npm ERR!      'FSReqWrap.oncomplete (fs.js:95:15)' ] }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.



npm 의 기본 디렉토리에 모듈을 설치할 때, 현재 사용자가 기본 디렉토리에 대한 권한이 없어서 발생하는 문제이다.

npm 의 documentation 에는 이러한 오류에 대해 두 가지 해결 방안을 제시하고 있다.




① npm 디렉토리에 현재 사용자의 권한을 추가하는 방법


먼저 터미널에서 아래와 같이 입력해서 npm 디렉토리가 어디에 위치해있는지 확인한다.


$ npm config get prefix


/usr/local 로 대부분 나오겠지만 /usr 로 나온다면 방법1은 사용할 수 없으며, 방법 2로 해결해야 한다.


/usr/local 로 나온경우, 아래와 같이 입력해서 owner 에 현재 사용자를 추가해준다. whoami 에 자신(현재 사용자)의 username이 들어가야 하고, 디렉토리에는 위에서 확인한 npm 디렉토리를 넣어주면 된다.


$ sudo chown -R $USER /usr/local


만약 모든 디렉토리의 퍼미션을 바꾸는걸 원치 않는다면, lib/node_modules 와 bin 그리고 share 디렉토리의 권한만 변경해주어도 된다.




② npm 의 기본 디렉토리를 다른 디렉토리로 변경하는 방법


먼저 global 로 설치하기 위한 디렉토리를 생성한다. (npm-global-modules 라는 디렉토리명 대신 다른 디렉토리명으로 생성해도 된다)


$ mkdir ~/npm-global-modules


그 다음 npm 이 새로운 디렉토리를 사용하도록 설정한다.


$ npm config set prefix '~/npm-global-modules'


그 다음, ~/.profile 파일을 열거나 없으면 만들어서 아래의 라인을 추가해준다.


$ export PATH=~/npm-global-modules/bin:$PATH


그리고 이 수정이 반영될 수 있도록 시스템 변수를 업데이트해준다.


$ source ~/.profile





개인적으로는 다소 귀찮지만 퍼미션 변경이 없는 두 번째 방법을 더 선호한다. 아래의 명령을 실행하면 위의 과정을 한번에 처리할 수 있다.


mkdir ~/npm-global-modules && npm config set prefix '~/npm-global-modules' && echo "export PATH=~/npm-global-modules/bin:\$PATH" >> ~/.profile && source ~/.profile



Node.js 관련 포스팅 더보기