본문 바로가기

node js

Mac에서 Node.js 버전 관리하기 (nodebrew를 사용)

Node js 버전마다 npm_module의 라이브러리 코드 및 호환성이 달라질 수 있다.

npm install 또는 npm init을 통해서 설치한 nodejs는 버전에 따라 동작하지 않을 수도 있다.

프로젝트에 맞는 적절한 nodejs 모듈을 설치하기 위해서는 nodejs 버전을 바꿔줘야 한다.

 

맥을 사용하고 있다면 nodejs를 편히 관리하기 위해서는 노드js 버전 관리 메니저를 사용한다.

맥용 nodejs 버전관리 메니저에는 NVM과 nodebrew가 있다.

여기서는 nodebrew를 통한 nodejs를 설치 해 보자.

 

nodejs를 실행하는 명령어 'node 옵션'는 nodejs 파일과 연결되어 있다. node 명령어는 nodejs 파일을 글로벌로 실행하는 것이다.

brew가 아닌 다른 방법으로 설치된 nodejs와 brew로 설치된 nodejs가 있을 때 nodejs 실행 파일의 경로는 서로 다르다.

node 명령어에 어느 경로의 파일에 연결시킬지에 따라 nodejs 실행이 달라진다.

 

노드js 버전 관리 메니저인 nodebrew로 특정 nodejs 버전을 선택하면, node 명령어를 nodebrew로 설치된 nodejs와 연결 시켜 준다.

그런데 이 때, node 명령어가 nodebrew와 연결되지 않고 기존에 nodebrew가 아닌 다른 방식으로 설치된 패키지와 연결을 유지하고 있을 수 있다.

brew를 통한 특정 nodejs 버전 또는 맥에 직접 nodejs를 설치한 파일과 node 명령어가 연결되어 nodebrew를 통한 node 명령어가 연결되지 않는 현상이 생긴다.

 

어차피 nodejs를 여러 방식으로 설치할 필요 없이 하나로만 관리해 주면 되므로 충돌의 소지가 있는 모든 nodejs를 삭제한 후 nodebrew를 설치하는 방법을 알아 보자. brew로 nodejs를 설치하기 위해서는 다른 설치 방법으로 설치된 node를 지워는 방법은 맥의 패키지 설치 위치에서 모든 node 파일을 지우는 방식으로 진행한다.

 

먼저, brew로 설치된 nodejs를 삭제하기 위해서는 brew로 설치한 nodejs가 node 명령어에 연결되어 있어야 한다.

brew로 설치된 nodejs가 node 커멘드로 등록이 되어 있는지 확인하기 위해서는 brew로 설치된 nodejs를 다 삭제해 보면 알 수 있다.

node 명령어가 brew로 설치되어 있는 nodejs와 연결되어 있지 않은 경우라도 brew로 설치된 nodejs를 삭제해 주는 과정이 필요하다. 이것은 맥의 패키지 설치 위치에서 모든 nodejs 파일을 지우는 방식이라서 이 데이터를 지우는 동안 brew로 설치된 nodejs에 영향을 끼칠 수 있기 때문이다. brew로 설치된 노드 js가 제대로 삭제되지 않을 가능성이 있다.

 

brew로 설치된 nodejs를 다 삭제하기 위해서

brew search node

위 명령어를 입력하면 brew를 통해서 설치할 수 있는 node js를 확인할 수 있다. 체크 표시가 있다면 설치되어 있다는 뜻이다. 체크 표시가 되어 있는 대상을

brew uninstall 대상

명령어로 지워준다. 예를 들어

brew uninstall node

brew uninstall node@10

brew uninstall brewnode

그 후

brew search node

로 체크된 대상이 없는지 확인한다. node가 들어간 brew 패키지 중에서 체크 된 대상이 없다면 brew로 설치된 node js는 관련 패키지는 다 삭제해 준 것이다.

node --version

명령어로 버전 정보가 나오면 node 명령어가 brew와 연결 되지 않은 것을 확인할 수 있다.

 

의존성이 있을 경우

바벨과 같은 프로젝트가 설치되어 있는 경우 의존성 문제로 삭제되지 않을 수 있다. 의존성 패키지를 먼저 삭제해 주고 노드 언인스톨 명령어를 실행해 준다. 예를 들어

Refusing to uninstall /usr/local/Cellar/node/11.10.0
because it is required by babel, which is currently installed.

라는 오류가 발생해서 노드 언인스톨이 안 된다면

brew uninstall babel

의존성이 있는 대상을 먼저 삭제해 준 후 노드를 삭제해 준다. node 명령어를 brew로 연결시켜 주기 위해서는 기존에 연결된 brew 아닌 방식으로 설치된 node를 지우고 새로 node를 연결시켜 줘야 한다.

 

모든 node를 삭제해 보자.

cd /usr/local/lib
cd /usr/local/include

위 경로에서 node 관련 파일 또는 폴더를 삭제해 준다. 다음 명령어를 참고하자.

sudo rm -rf node/*

그리고 node 명령어 npm 명령어가 저장된 곳에서도 삭제해 준다. 이 명령어를 사용하면 커멘드 라인에서 입력할 때 쓰는 node, npm 명령어는 사라진다.

sudo rm -rf /usr/local/bin/npm
sudo rm -rf /usr/local/bin/node

node 명령어가 먹히는지 안 먹히는지 확인해 보자.

node --version
npm --version

노드 관련 명령어의 옵션을 지정하는 파일도 명령어 변경이 있을 수 있기 때문에 삭제해 준다.

sudo rm -rf /usr/local/share/man/man1/node.1

새로 nodejs 설치 시 충돌날 일이 없도록 nodejs 관련 파일은 다 삭제해 주자.

sudo rm -rf /usr/local/lib/dtrace/node.d
sudo rm -rf ~/.npm

 

brew로 nodejs를 설치하자.

brew search node

위 명령어를 사용하면 brew를 통해 설치할 수 있는 node 버전이 나온다. 버전 관리를 할 것이기 때문에 버전별로 node를 관리해 주는 nodebrew를 설치해 준다.

brew install nodebrew

그 후 다음 명령어로 지원하는 노드 버전을 확인한다.

nodebrew ls-all

리스트에서 LTS인 10.16.3 버전을 설치해 보자. 리스트에 나온 그대로 입력 해 주면 된다.

nodebrew install v10.16.3
Warning: Failed to create the file
Warning: /Users/$whoami/.nodebrew/src/v10.16.3/node-v10.16.3-darwin-x64.tar.g

라는 에러가 나오면 폴더가 없어서 그런 것이므로 저장할 폴더를 만들어 준다.

mkdir -p ~/.nodebrew/src

 

install이 되었다면 인스톨 된 버전을 사용해 준다.

nodebrew use v10.16.3

그리고

node --version

위 명령어로 node 버전이 맞게 설치 되었는지 확인한다.

 

다른 노드 버전을 사용하고 싶다면

예를 들어 오래된 버전인 v6.16.0을 사용할 일이 있기 때문에 설치 해 주고

nodebrew install v6.16.0

설치된 버전을 사용한다.

nodebrew use v6.16.0

그리고 버전을 확인하면

node --version

노드 버전이 바뀐 것을 확인할 수 있다.

 

커멘드라인 명령어로 node, npm 등록

-bash: node: command not found

위와 같은 메시지가 나온다면 맥 OS의 디폴트 베쉬인  명령어에 bash_profile파일에 nodebrew를 추가해 주고

echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bash_profile

bash_profile에 위의 코드를 적어 놓았다면, 다음 부터는 bash_profile파일을 불러와서 추가된 명령어를 반영해 주면 된다.

source ~/.bash_profile

 

'node js' 카테고리의 다른 글

Node JS 크롤러 도구 cheerio  (0) 2019.09.13