node.js 충돌 : / sbin / node vs / usr / bin / node


32

두 개의 Ubuntu 12.10 시스템이 있습니다. 시스템 A는 VMWare VM이고 시스템 B는 오래된 Acer 랩톱입니다. 두 컴퓨터 모두 apt-get을 사용하여 노드를 설치했습니다. 그러나 머신 A는 기본 바이너리를 /usr/bin/node머신 B를로 설치합니다 /usr/bin/nodejs. 다음은 내가 관찰 한 동작입니다.

  1. 두 머신 모두 명령 /usr/bin/node에 대한 응답으로 돌아갑니다 which node. 그러나 시스템 B에는 이러한 파일이 없습니다.
  2. 명령을 내리는 node것은 B가 아닌 머신 A에서 작동합니다. B에서는 nodejs대신 사용해야 합니다.
  3. B에는 / sbin / node라는 이진이 있으며 A에는 없습니다.

이러한 동작은 두 시스템 모두에서 개발할 때 불일치 문제를 발생시킵니다. 지금은 B의 바이너리 이름을 다음과 같이 변경하여 해결했습니다.

sudo mv /sbin/node /sbin/node-sbin
sudo ln -s /usr/bin/nodejs /usr/bin/node

실제로 이것을 수정하는 방법이 있습니까? 그래서 노드 /usr/bin/node대신에 노드가 설치됩니다 /usr/bin/nodejs.

답변:


15

우분투 13.10에서는 위의 모든 답변이 효과가 없었습니다. nodejs-legacy를 설치할 때 마침내 작동했습니다.

sudo apt-get install nodejs-legacy

/usr/bin/node예를 들어 nodemon사용할 수 있도록 올바르게 제공 되었습니다 .


왜 이것을 설치해야하는지 아십니까? 실제로 어떻게 든 심볼릭 링크를 생성합니까? 노드가 실행 파일 이름을 nodejs로 변경 한 이유는 무엇입니까?
Augustin Riedinger

"node"라는 이름은 훨씬 오래된 프로그램과 충돌했습니다. 아래의 lists.debian.org/debian-devel-announce/2012/07/msg00002.htmlLeftium 의 답변을 참조하십시오.
Robie Basak

36

업데이트 :nodejs-legacy 패키지 를 사용하도록 아래 지침을 수정했습니다 . ( 노드 레거시에 대한 자세한 정보 )

충돌하는 노드 패키지를 완전히 제거하십시오.

sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs-legacy
sudo apt-get --purge remove nodejs

sudo apt-get install nodejs-legacy

# Confirm it worked
node --version       # v0.10.13
ls -la `which node`  # ... /usr/bin/node -> /etc/alternatives/node

non-node.js node패키지를 무심코 설치했을 때 이런 일이 일어났습니다 . apt-get remove node올바른 nodejs패키지 를 설치하기 전에 수행 했지만 --purge인수가 필요한 것 같습니다.

배경 정보 :

노드 패키지 (Amateur Packet Radio Node Program)와 이름이 충돌하고 nodejs 바이너리의 이름이 node에서 nodejs로 변경되었습니다. / usr / bin / node를 / usr / bin / nodejs에 심볼릭 링크하거나 아마추어 패킷 라디오 노드 프로그램을 제거하여 충돌을 피할 수 있습니다.


배경 정보에 감사드립니다. 이 시점에서 시도 할 머신이 없지만 언젠가 다시 방문 할 수 있기를 바랍니다.
Hai Vu

이것은 /usr/bin/node우분투 13.10에서 당신을 얻지 못합니다 . 그러나 @ user229115의 대답은 효과적입니다.
Jim Stewart

1
따라서 우분투 13.10 sudo apt-get install nodejs nodejs-legacy에서는 node바이너리를 node.js로 제공하지만 이미 node(아마추어 패킷 라디오 노드 프로그램)을 설치했다면 분명히 제거해야합니다.
jonasfj 2013

1
@ AuugustinRiedinger : 내 대답을 업데이트했습니다. '잘못된 구성'패키지 제거와 패키지 설치의 조합이 효과가 있다고 생각합니다 nodejs-legacy.
Leftium

1
고마워요. 실제로 그것은 실제로 실행 파일에 nodejs-lecacy대한 심볼릭 링크 일 수 있는 패키지를 설치할 때 작동합니다 nodejs...
Augustin Riedinger

11

불행히도 저에게 심볼릭 링크를 만들지 못했습니다. 별명을 만들었지 만 나를 위해 일한 것은 무엇입니까? 에서 ~/.bashrc또는 ~/.bash_aliases(경우 ~/.bashrc하중이 파일), 바로 다음 줄을 추가합니다 :

alias node="nodejs"

bash콘솔 에 입력하여 bash 세션을 다시 시작 하면 별칭이 작동합니다.


2
심볼릭 링크를 만들 때 다른 터미널을 시작할 때까지 작동하지 않았습니다. 터미널을 다시 시작해보십시오 ... 또는 심볼릭 링크 / 별칭없이 작동하는 대답 ^^
Leftium

@Leftium : 또한 다음을 실행해야합니다. source ~/.bashrc.bashrc 파일을 다시로드하려면 (터미널을 다시 시작하지 않으려면) 자세한 내용을 읽어보십시오.
Deepak Joy

hash node현대 쉘은 PATH에서 이전에 찾은 명령의 위치를 ​​기억하기 때문에 새 위치에서 심볼릭 링크를 수행하려면 기존 터미널에서 호출이 거의 필요합니다 . hash등 껍질에 내장 명령은 조회를 다시 실행하고 새 위치를 기억하도록 지시합니다.
mtraceur


1

최신 답변이지만 최신 정보는 ...

node github installation readme 의 권장 메소드를 사용하여 node.js를 설치하는 경우 오래된 apt-get repo에서 설치하는 대신 nodesource 블로그 기사 의 지시 사항을 따르는 것이 좋습니다. node.js 는 다음 명령을 사용하여 실행해야합니다 node. nodejs새로운 심볼릭 링크를 만들 필요없이 명령 뿐만 아니라 .

이 기사의 방법은 다음과 같습니다.

# Note the new setup script name for Node.js v0.12
curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -

# Then install with:
sudo apt-get install -y nodejs

이것은 v0.12 용이며 먼 미래에는 구식이 될 것입니다.

또한 나와 같은 회사 프록시 뒤에있는 경우 sudo 명령에 -E 옵션을 추가하여 프록시에 필요한 env 변수를 유지하려고합니다.

curl -sL https://deb.nodesource.com/setup_0.12 | sudo -E bash -

1

우분투 14.04 나는 동일한 노드에 문제가 있었다. 나는 "node"와 "nodejs"를 사용하지 않았다. 난 그냥했다

sudo apt-get remove node

그리고 그 직후, 노드가 실행 중이고 nodejs도 실행 중입니다. :) 나는 리눅스를 처음 접했고 그것은 나에게 잘못된 것입니다. 그러나 Bower는 달리고있다! !!


0
sudo getconf LONG_BIT
sudo uname -p
  • CPU 아키텍처 확인
  • https://nodejs.org/dist/의 디렉토리 트리에서 node.js 배포를 찾으십시오 (참고 : 다양한 CPU 아키텍처에 대한 다양한 node.js 배포의 다양한 버전)

내 데스크탑은 현재 Ubuntu 15.10 AMD64이므로 설치 예제에서 다음 URL을 사용합니다 (다소 분포가 다릅니다).

sudo wget https://nodejs.org/dist/v5.0.0/node-v5.0.0-linux-x64.tar.gz

그런 다음 디렉토리를 다운로드 디렉토리로 변경 하십시오 .

sudo cd /home/name/Downloads

다운로드 디렉토리에서 다음을 실행하십시오.

sudo tar -C /usr/local --strip-components 1 -xzf node-v5.0.0-linux-x64.tar.gz

다음을 사용하여 node.js 설치를 확인하십시오.

sudo ls -l /usr/local/bin/node
sudo ls -l /usr/local/bin/npm

심판. http://www.hostingadvice.com/how-to/install-nodejs-ubuntu-14-04/


1
-1 tar명령 만 필요합니다 sudo.
muru

+1 더 나은 방법에 대해 대단히 감사합니다-가장 좋은 방법입니다!
1111161171159459134
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.