데비안 Jessie에 최신 NodeJS를 설치하는 방법?


29

권장되는 접근 방식을 사용하여 Debian Jessie에 NodeJS & NPM을 설치했습니다.

apt-get install curl
curl -sL https://deb.nodesource.com/setup | bash -
apt-get install -y nodejs

그러나 꽤 오래된 버전입니다 (노드 v0.10.38 및 npm 1.4.28).

최신 버전을 설치하는 가장 쉬운 방법에 대한 제안 사항, 예를 들어 현재 노드는 v0.12.4이고 npm은 2.7.4입니까? 소스에서 설치하는 것이 유일한 방법입니까?

답변:


48

Node.js에 사용할 수있는 설정 스크립트가 있습니다 ( install insctructions 참조 ).

# Adapt version number to the version you want
curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -
sudo apt-get install -y nodejs

약간의 의견 : 겸손한 의견으로는에 대한 매우 나쁜 생각 curl | sudo bash입니다. 루트 권한으로 확인하지 않은 스크립트를 실행 중입니다. 그것은, 그것을 통해 읽기, 스크립트를 다운로드 악의적 인 명령을 확인하는 것이 더 나은, 그리고 후에 그것을 실행합니다. 그러나 그것은 단지 나의 2 센트입니다.

수동 설치 절차 에 따라 몇 단계를 거쳐 수동으로 설치를 수행 할 수 있습니다 .

  • 기존 PPA 제거 (해당되는 경우)
  • 노드 저장소 키 추가
  • 에 노드 저장소 추가 sources.list
  • 패키지 목록을 업데이트하고 선호하는 apt 도구를 사용하여 설치

5
ops, 그것을 사용하십시오. 그러나 지금은 setup_4.x... redo curl 및 apt-get ok입니까?
Peter Krauss

3
최신 실제 버전이 필요할 수 있으므로 github.com/nodesource/distributions 사이트를 방문하는 것이 좋습니다 .
seniorpreacher

바이너리를 실행하는 동일한 소스에서 보안 연결을 통해 제공되는 경우 신뢰할 수없는 이유

@ acidzombie24 그렇습니다.하지만 악하지 않다는 코드를 신뢰하더라도 스크립트 또는 오래된 스크립트 또는 구성이 다소 이색적 일 수 있습니다. 또는 sources.list를 어떤 방식으로 주문하고 싶을 수도 있고 스크립트는 그렇지 않습니다. 어쨌든, 그것은 나쁜 습관이라고 생각합니다. 초보자는 (OP를 목표로하고 있지 않지만 일반적으로) 그렇게하지 않아야합니다. 특히 작업을 수동으로 수행하는 경우 스크립트를 검사하는 것보다 훨씬 간단합니다.
Jérôme

12

웹 사이트에서 최신 버전의 노드 ( 4.2.2) 다운로드 할 수 있습니다.데비안에서 제공하는 패키지 ( 0.12) 를 사용하는 대신 . 또한 업데이트 된 버전의 npm이 있음을 의미합니다. Jessie 에서이 작업을 수행하는 데 아무런 문제가 없었습니다.

다운로드 .tar.gz웹 사이트에서와 cd(파일의 이름은 내 다운로드에 분명히 다릅니다) 그 디렉토리에 :

$ tar -xzvf node-v4.2.2-linux-x64.tar.gz
$ cd node-v4.2.2-linux-x64

bin 폴더를 살펴보면 node 및 npm에 필요한 바이너리가 표시됩니다.

$ ls node-v4.2.2-linux-x64/bin 
node  npm

이제 폴더 이름을 조금 더 쉽게 추적 할 수 있습니다.

$ mv node-v4.2.2-linux-x64 nodejs

노드 업데이트를 유지하고 싶지 않다면이 폴더를 저장소 위치 중 하나로 옮기십시오. ~/bin 다음을 ) 다음 단계를 건너 뜁니다.

노드 버전을 쉽게 업데이트하려면 nodejs폴더를 추적 할 수있는 위치 로 이동하십시오 ( ~/nodejs아마도?). 그런 다음 전체 경로를 작성하지 않고 쉘에서 바이너리를 사용할 수 있도록 bin 위치 중 하나에 대한 심볼릭 링크 를 만들려고합니다 .

nodejs 폴더를 홈 디렉토리에 저장하면 다음을 수행 할 수 있습니다.

$ ln -s ~/nodejs ~/bin/nodejs

분명히 이것은 원하는 모든 빈 위치로 이동할 수 있습니다. 내 홈 디렉토리를 사용했기 때문에 나만 사용할 수 있지만 쉽게 할 수 있습니다.

$ ln -s ~/nodejs /usr/local/bin/nodejs

이렇게하면 홈 디렉토리의 nodejs 폴더에서 bin 디렉토리로의 심볼릭 링크 가 생성됩니다 (즉, 홈 폴더의 디렉토리에 대한 모든 업데이트가 심볼릭 링크 를 통해 다른 폴더에 반영됨 ). 지금 당신은 확인 nodejs 디렉토리를 포함하는 폴더 빈 당신에 있는지 확인하려면 $PATH환경 변수 , 그래서 열 ~/.profile홈 디렉토리에 파일을. 이것을 파일의 맨 아래에 추가하고 싶습니다 (사용하지 않은 경우 경로 변경 ~/bin/).

# Set the node PATH if it exists
if [ -d "$HOME/bin/nodejs/bin" ] ; then
    PATH="$HOME/bin/nodejs/bin:$PATH"
fi

디렉토리가 존재하는지 확인하고 존재하면 PATH에 추가하십시오. 나는 zsh방금 다음 줄을 업데이트했다 ~/.zshrc.

export PATH="$HOME/bin/nodejs/bin:$PATH"

터미널을 닫았다가 다시 연 후 다음을 입력하여 확인하십시오.

$ node -v
v4.2.2

$ npm -v
2.14.7

sym 링크를 만들면 앞으로 .tar.gzNodejs 웹 사이트에서 새 파일을 다운로드하여 압축을 풀고 환경 변수~/nodejs 에서 사용 가능한 바이너리 가 자동으로 업데이트됩니다.$PATH


이것은 작동하는 npm을 제공했기 때문에 나를 위해 일했습니다.
artfulrobot

4

필자의 경우 권장 쉘 명령을 실행했습니다.

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs

문제는 bash 스크립트가 APT 고정을 업데이트하지 않았기 때문에 apt-get은 nodesource.com이 아닌 debian.org 소스에서 기본 오래된 데비안 패키지를 설치했다는 것입니다

이 문제가 있는지 확인하십시오 apt-cache policy nodejs. 당신은 같은 것을보아야한다Candidate: 6.10.2-1nodesource1~jessie1 하지Candidate: 0.10.29~dfsg-2

노드 우선 순위에 핀 우선 순위를 설정하려면 /etc/apt/preferences.d/호출 된 node컨텐츠 또는이 컨텐츠로 무엇이든 파일을 추가하십시오 .

Package: nodejs
Pin: release o=Node Source
Pin-Priority: 1200

저장하고 실행하십시오 apt-get cache update. 그런 다음 apt-cache policy nodejs다시 시도 하십시오. 후보가 올바르게 보이면 정상적으로 설치하십시오.apt-get install nodejs


apt-get cache updateE: Invalid operation cache내가 돌아 왔을 때 돌아왔다 sudo aptitude update.
user394

2

공식 node.js 설명서따라 패키지 관리자를 사용하여 최신 버전을 설치할 수 있습니다 .

Node.js v6 :

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs

Node.js v7 :

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs

후자를 실행하면 노드 v7.5.0 및 npm v4.1.2가 시스템에 설치되었습니다. 노드에 대해 별칭 nodenodejs별칭이 모두 자동으로 활성화되었습니다.


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