UbuntuのNodeJSインタプリタ名(node
)は、他のパッケージと名前が競合するためnodejs
に改名されました。これがreadmeなのです。 Debianは言います:
Node.jsインタプリタコマンドのアップストリーム名は "node"です。 Debianでは、インタプリタコマンドは "nodejs"に変更されました。
これは名前空間の衝突を防ぐために行われました:他のコマンドはそれらの上流で同じ名前を使います、例えば "node"パッケージのax25-nodeのように。
ShellコマンドとしてNode.jsを呼び出すスクリプトは、代わりに "nodejs"コマンドを使用するように変更する必要があります。
ただし、nodejsを使用すると、npm
を使用したパッケージのインストールが複雑になります。パッケージのインストールは次のエラーで失敗します。
sh: 1: node: not found npm WARN This failure might be due to the use of legacy binary "node" npm WARN For further explanations, please read /usr/share/doc/nodejs/README.Debian
Nodejsはすでにシステムにインストールされているが、インタプリタ名は異なることをnpmに理解させるにはどうすればよいですか?
TL; DR:
Sudo apt-get install nodejs-legacy
まず最初に、状況を少し明確にしましょう。 2012年夏、Debianのメンテナは、ある種の名前空間が他のパッケージと衝突するのを防ぐためにNode.js実行ファイルの名前を変更することにしました。 Debian技術委員会にとって後方互換性が損なわれるため、非常に難しい決断でした。
以下は、Debian メーリングリスト で公開された、委員会決議草案からの引用です。
Nodejsパッケージは、/ usr/bin/nodeではなく/ usr/bin/nodejsを提供するように変更されます。パッケージは、/ usr/bin/nodeを参照するDebian内のパッケージとのBreaks:関係を宣言する必要があります。
Nodejsソースパッケージは、優先順位:extraでnodejsレガシーバイナリパッケージを提供し、/ usr/bin/nodejsへのシンボリックリンクとして/ usr/bin/nodeを含みます。アーカイブ内のパッケージは、上流専用に提供されているnodejs-legacyパッケージに依存したり推奨されたりすることはありません。
互換性このパッケージは、ノードパッケージとの間でConflict::関係も宣言します。<...>
段落2は、OPの問題に対する実際の解決策です。手動でシンボリックリンクを作成するのではなく、OPはこのパッケージをインストールしようとします。これはDebianパッケージのindex website にあるこのパッケージへのリンクです。
Sudo apt-get install nodejs-legacy
を使ってインストールすることができます。
NPM開発者に全部を採用することに関する情報はありませんが、npm
パッケージはいつか修正され、nodejs-legacy
は本当にレガシーになると思います。
Nodeをnodejsにリンクしてみてください。最初にnodejsがどこにあるかを調べます
whereis nodejs
それからnodejsへのソフトリンクノード
ln -s [the path of nodejs] /usr/bin/node
/ usr/binが実行パスにあると仮定しています。それからあなたはあなたのコマンドラインにnodeまたはnpmとタイプすることによってテストすることができ、そしてすべてが今うまくいくはずです。
NVMまたはNodejs Version Managerを使用してNodejsをインストールすることもできますbenefits バージョンマネージャを使用します。それらの1つは、この問題を心配する必要がないことです。
Sudo apt-get update
Sudo apt-get install build-essential libssl-dev
必要なパッケージをインストールしたら、プロジェクトのGitHubページからnvmインストールスクリプトをプルダウンできます。バージョン番号は異なる場合がありますが、一般に、次の構文でダウンロードしてインストールできます。
curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh
これにより、スクリプトがダウンロードされて実行されます。ソフトウェアは、~/.nvm
にあるホームディレクトリのサブディレクトリにインストールされます。また、~/.profile
ファイルに必要な行を追加して、ファイルを使用します。
Nvm機能にアクセスするには、ログアウトしてから再度ログインする必要があります。または、現在のセッションが変更を認識できるように〜/ .profileファイルを取得できます。
source ~/.profile
Nvmがインストールされたので、分離されたNode.jsバージョンをインストールできます。
インストール可能なNode.jsのバージョンを確認するには、次のように入力します。
nvm ls-remote
. . .
v0.11.10
v0.11.11
v0.11.12
v0.11.13
v0.11.14
ご覧のとおり、この記事の執筆時点での最新バージョンはv0.11.14です。次のように入力してインストールできます。
nvm install 0.11.14
通常、nvmは最後にインストールされたバージョンを使用するように切り替わります。次のように入力して、ダウンロードしたばかりのバージョンを使用するようにnvmに明示的に指示できます。
nvm use 0.11.14
Nvmを使用してNode.jsをインストールすると、実行可能ファイルはノードと呼ばれます。次のように入力すると、現在シェルで使用されているバージョンを確認できます。
node -v
Comepleteチュートリアルを見つけることができます こちら
最初にnvm
をインストールします。
curl https://raw.githubusercontent.com/creationix/nvm/v0.11.1/install.sh | bash
実行コマンド
source ~/.profile
これを実行すると、これはすべてのインストール済みまたは他のバージョンのパッケージを表示します。
nvm ls-remote
インストールされたパッケージは緑色になります。希望するバージョンをインストールしてください。
nvm install 6.0.0
インストールされていない場所を確認します。
which node
現在のバージョンを確認してください。
node -v
n=$(which node);
n=${n%/bin/node};
chmod -R 755 $n/bin/*;
Sudo cp -r $n/{bin,lib,share} /usr/local
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
source ~/.profile
承認された答えを、折り畳まれたコメントからのsource ~/.profile
と組み合わせて、以前にいくつかのコマンドをクリーンアップしました。たぶん、あなたも後にSudo apt-get install npm
をする必要があるでしょう。
私のために問題が解決された、
Sudo apt-get remove node
Sudo apt-get remove nodejs
curl -sL https://deb.nodesource.com/setup_8.x | Sudo -E bash -
Sudo apt-get install -y nodejs
Sudo ln -s /usr/bin/nodejs /usr/bin/node
alias node=nodejs
rm -r /usr/local/lib/python2.7/dist-packages/localstack/node_modules
npm install -g npm@latest || Sudo npm install -g npm@latest
ノードバージョンを簡単に切り替えるために n が好きなので、ここで私が使用する別のアプローチがあります。
新しいUbuntuシステムでは、まず 'system'ノードをインストールします。
curl -sL https://deb.nodesource.com/setup | Sudo bash -
次に n moduleをグローバルにインストールします。
npm install -g n
システムノードが最初にインストールされているので(上)、alternativesシステムは n によって提供されるノードを明確に指すために使うことができます。まず、代替システムがノードに何もないことを確認します。
update-alternatives --remove-all node
それから n によって提供されるノードを追加します。
update-alternatives --install /usr/bin/node node /usr/local/bin/node 1
次にシステムが提供するノード(curlを使ってインストールされたもの)を追加します。
update-alternatives --install /usr/bin/node node /usr/bin/nodejs 2
対話型メニューを使用して、 n で指定されたノードを選択します(次のコマンドで表示されるメニューから/usr/local/bin/node
を選択します)。
update-alternatives --config node
最後に、/usr/local/bin
は通常、/usr/bin
よりもPATHの優先順位が高いため、alternativesシステムノードを有効にするには、次のエイリアスを作成する必要があります(.bashrcまたは.zshrcに入力します)。それ以外の場合は、/ usr/local/binに n を付けてインストールされたノードが常に優先されます。
alias node='/usr/bin/node'
これでn <desired node version number>
を使ってノードバージョンを簡単に切り替えることができます。
他の人々がすでに述べたように、私はノードや開発ライブラリをインストールするのに "Sudo apt-get"を使わないことをお勧めします。 https://nodejs.org/dist/v6.9.2/ から必要なバージョンをダウンロードしてあなた自身の環境をセットアップすることができます。
ノードバージョンを管理するには、 nvm や n のようなツールをお勧めします。これらのモジュールを切り替えて作業することは非常に便利です。 https://github.com/creationix/nvmhttps://github.com/tj/n
またはZip/tarをダウンロードし、移動フォルダを抽出してソフトリンクを作成するための基本的なbashを書く。更新する必要があるときはいつでも、古いソフトリンクを新しいダウンロードバージョンにポイントするだけです。私が自分用に作成したように、あなたは参照することができます: https://github.com/deepakshrma/NodeJs-4.0-Reference-Guide/blob/master/nodejs-installer.sh
#Go to home
cd ~
#run command
#New Script
wget https://raw.githubusercontent.com/deepakshrma/NodeJs-4.0-Reference-Guide/master/nodejs-installer.sh
bash nodejs-installer.sh -v lts
#here -v or --version can be sepecific to 0.10.37 or it could be latest/lts
#Examples
bash nodejs-installer.sh -v lts
bash nodejs-installer.sh -v latest
bash nodejs-installer.sh -v 4.4.2
Linux Mint 17では、私は両方の解決策(シンボリックリンクの作成またはnodejs-legacy
パッケージの使用)を試しても成功しませんでした。
ついに私のために働いたのはChris Leaのppaを使うことだけでした。
Sudo apt-get purge node-*
Sudo apt-get autoremove
Sudo add-apt-repository ppa:chris-lea/node.js
Sudo apt-get update
Sudo apt-get install nodejs
これはノードバージョン10.37およびnpm 1.4.28をインストールしました。その後、私はパッケージをグローバルにインストールすることができました。
curl -sL https://deb.nodesource.com/setup_7.x | Sudo -E bash --
Sudo apt-get install nodejs
Setup_x.xの値をsetup_5.xのように変更することでバージョンを指定できます。
システムはパスノードjs binaryを検出できません。
1.どのノード
2. nodejsへのソフトリンクノード
ln -s [the path of nodejs] /usr/bin/node
/ usr/binが実行パスにあると仮定しています。それからあなたはあなたのコマンドラインにnodeまたはnpmとタイプすることによってテストすることができ、そしてすべてが今うまくいくはずです。
あなたが持っているどのノードバージョンでもアンインストールする
Sudo apt-get --purge remove node
Sudo apt-get --purge remove nodejs-legacy
Sudo apt-get --purge remove nodejs
nvm(Node Version Manager)をインストールします。 https://github.com/creationix/nvm
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash
今、あなたはあなたが望むノードのどんなバージョンでもインストールすることができて、そしてバージョン間で切り替えることができます。
/ usr/sbin/node(これはax25-nodeパッケージにリンクされています)をリンク解除して修正した後、これをコマンドラインでnodejsへのリンクを作成しました
Sudo ln -s /usr/bin/nodejs /usr/bin/node
Karmaなどのパッケージはnodejs名では動作しないため、karmaスクリプトの最初の行をnodeからnodejsに変更しますが、この問題を一度解決することをお勧めします。
これはあなたのノードが正しくインストールされていないことです、最初にあなたはノードをアンインストールし、そして再びインストールする必要があります。ノードをインストールするためにこれはあなたを助けるかもしれません http://array151.com/blog/nodejs-tutorial-and-set-up/ /
その後、あなたは簡単にパッケージをインストールすることができます。パッケージをインストールするためにこれはあなたを助けるかもしれません
問題はインストーラにはありません
nodejsをnodeに置き換えるか、パスを/ usr/bin/nodejsから/ usr/bin/nodeに変更してください。
私にとっての修正はnode *パッケージとnpmパッケージを削除することでした。
その後、以下のように新規インストールします。
Sudo apt-get install autoclean
Sudo apt-get install nodejs-legacy
npm install
ln -s nodejs
にリンク/usr/bin
ノードを作成すると、これで問題が解決します。