node.jsの競合:/ sbin / node vs / usr / bin / node


32

Ubuntu 12.10マシンが2台あります。マシンAはVMWare VM、マシンBは古いAcerラップトップです。両方のマシンで、apt-getを使用してノードをインストールしました。ただし、マシンAはメインバイナリとしてインストールし/usr/bin/node、マシンBはとしてインストールします/usr/bin/nodejs。私が観察したいくつかの動作は次のとおりです。

  1. 両方のマシンがコマンド/usr/bin/nodeに応答して戻りますwhich node。ただし、マシンBにはそのようなファイルはありません。
  2. コマンドの発行は、nodeBではなくマシン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

Ubuntu 13.10では、上記のすべての回答がうまくいきませんでした。nodejs-legacyをインストールしたときにようやく動作しました

sudo apt-get install nodejs-legacy

これは正しく提供さ/usr/bin/nodeれたため、たとえばnodemon使用できます。


なぜこれをインストールする必要があるのでしょうか?それは実際に何らかの形でシンボリックリンクを作成しますか?nodeが実行可能ファイルの名前をnodejsに変更したのはなぜですか?
オーガスティンリーディンガー

「ノード」という名前は、はるかに古いプログラムと競合していました。lists.debian.org/debian-devel-announce/2012/07/msg00002.htmlおよび下記のLeftiumの回答を参照してください。
ロビーバサック

36

更新:nodejs-legacyパッケージを使用するために以下の手順を変更しました。(node-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にシンボリックリンクする必要があります。または、アマチュアパケット無線ノードプログラムをアンインストールして、その競合を回避することができます。


背景情報をありがとう。現時点では、これらのマシンを試用することはできませんが、近いうちに再訪できることを願っています。
ハイVuの

これは/usr/bin/node、Ubuntu 13.10で取得できません。ただし、以下の@ user229115の回答は機能します。
ジムスチュワート14年

1
Ubuntu 13.10では、node.jsとしてバイナリsudo apt-get install nodejs nodejs-legacyが提供されますが、node既にnode(Amateur Packet Radio Node Program)をインストールしている場合は、明らかにそれを削除する必要があります。
jonasfj 14

1
@AugustinRiedinger:答えを更新しました。「誤って設定された」パッケージの削除とパッケージのインストールの両方の組み合わせが機能すると思いますnodejs-legacy
レフティウム

1
とても明確です。インストール時に実際にそれが動作nodejs-lecacyするだけのシンボリックリンクかもしれパッケージnodejsの実行実際に...
オーギュRiedinger

11

残念ながら、シンボリックリンクの作成は機能しませんでした。私にとってうまくいったのは、エイリアスを作成することでした。では~/.bashrcまたは~/.bash_aliases(場合~/.bashrc、このファイルをロード)、単に以下の行を追加します。

alias node="nodejs"

bashコンソールに入力してbashセッションを再起動すると、エイリアスが機能するようになります。


2
シンボリックリンクを作成したとき、別のターミナルを起動するまで機能しませんでした。端末を再起動してみてください...またはシンボリックリンク/エイリアスなしで動作する私の答え^^
レフティウム

@Leftium:次も実行する必要があります:source ~/.bashrc.bashrcファイルをリロードするには(ターミナルの再起動を避けたい場合)続きを読む..
Deepak Joy 14

新しい場所でのシンボリックリンクは、ほぼ確実にhash node既存のターミナルでの呼び出しを必要とします。これは、最新のシェルが以前にPATHで検索されたコマンドの場所を記憶しているためです。このhashようなシェルの組み込みコマンドは、ルックアップをやり直して新しい場所を記憶するように指示します。
mtraceur

7

私はこれだと思う:

sudo update-alternatives --install / usr / bin / node node / usr / bin / nodejs 10

Debianの代替手段を使用します。


ありがとう。これは、この問題に関するUbuntuの決定を修正する最も直接的な方法です。
ドリュー

@drewは、Ubuntuバグbugs.launchpad.net/ubuntu/+source/node/+bug/1030421に基づいて、これについてUbuntuがDebianの決定に従っているようです
ロイドデウルフ

1

遅い答えですが、最新情報については...

node github installation readmeからRecommendedメソッドを使用してnode.jsをインストールする場合、期限切れの apt-getリポジトリからインストールするのではなく、nodesourceブログ記事の指示に従うことをお勧めします。node.jsnodeコマンドを使用して実行する必要があります。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向けであり、遠い将来には時代遅れになる可能性が高いことに注意してください。

また、企業のプロキシ(私のような)の背後にいる場合、プロキシに必要なenv変数を保持するために、sudoコマンドに-Eオプションを追加する必要があります。

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

1

のUbuntu 14.04私は、同じノードの問題を抱えていました。私は「node」を動作させず、「nodejs」を動作させていました。今やりました

sudo apt-get remove node

そしてその直後に、nodeが実行されていて、nodejsも実行されています:)私はLinuxが初めてで、それは私にとってはミステリアスです。しかし、バウアーは実行中です!!!


0
sudo getconf LONG_BIT
sudo uname -p
  • CPUアーキテクチャを確認する
  • https://nodejs.org/dist/のディレクトリツリーでnode.jsディストリビューションを見つけます(注:さまざまなCPUアーキテクチャ向けのさまざまなnode.jsディストリビューションのさまざまなバージョン)

私のデスクトップは現在Ubuntu 15.10 AMD64であるため、インストール例では次のURLを使用します(繰り返しますが、distribは異なります)。

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

ref。http://www.hostingadvice.com/how-to/install-nodejs-ubuntu-14-04/


1
-1 tarコマンドのみが必要sudoです。
ムル

+1そのより良い方法をありがとう-私にとって最高の方法!
1111161171159459134
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.