web-dev-qa-db-ja.com

Ubuntuのノードパッケージマネージャを使ってパッケージをインストールできない

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に理解させるにはどうすればよいですか?

486
Sayem

TL; DR:

Sudo apt-get install nodejs-legacy

まず最初に、状況を少し明確にしましょう。 2012年夏、Debianのメンテナは、ある種の名前空間が他のパッケージと衝突するのを防ぐためにNode.js実行ファイルの名前を変更することにしました。 Debian技術委員会にとって後方互換性が損なわれるため、非常に難しい決断でした。

以下は、Debian メーリングリスト で公開された、委員会決議草案からの引用です。

  1. Nodejsパッケージは、/ usr/bin/nodeではなく/ usr/bin/nodejsを提供するように変更されます。パッケージは、/ usr/bin/nodeを参照するDebian内のパッケージとのBreaks:関係を宣言する必要があります。

  2. 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は本当にレガシーになると思います。

1082
vbo

Nodeをnodejsにリンクしてみてください。最初にnodejsがどこにあるかを調べます

whereis nodejs

それからnodejsへのソフトリンクノード

ln -s [the path of nodejs] /usr/bin/node 

/ usr/binが実行パスにあると仮定しています。それからあなたはあなたのコマンドラインにnodeまたはnpmとタイプすることによってテストすることができ、そしてすべてが今うまくいくはずです。

109
leorex

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チュートリアルを見つけることができます こちら

42
Eduardo Dennis
  1. 最初にnvmをインストールします。

    curl https://raw.githubusercontent.com/creationix/nvm/v0.11.1/install.sh | bash
    
  2. 実行コマンド

    source ~/.profile
    
  3. これを実行すると、これはすべてのインストール済みまたは他のバージョンのパッケージを表示します。

    nvm ls-remote
    
  4. インストールされたパッケージは緑色になります。希望するバージョンをインストールしてください。

    nvm install 6.0.0
    
  5. インストールされていない場所を確認します。

    which node
    
  6. 現在のバージョンを確認してください。

    node -v
    
    n=$(which node);
    n=${n%/bin/node}; 
    chmod -R 755 $n/bin/*; 
    Sudo cp -r $n/{bin,lib,share} /usr/local
    
17
Ritesh
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
11
shrishinde

ノードバージョンを簡単に切り替えるために 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>を使ってノードバージョンを簡単に切り替えることができます。

9
Ville

他の人々がすでに述べたように、私はノードや開発ライブラリをインストールするのに "Sudo apt-get"を使わないことをお勧めします。 https://nodejs.org/dist/v6.9.2/ から必要なバージョンをダウンロードしてあなた自身の環境をセットアップすることができます。

ノードバージョンを管理するには、 nvmn のようなツールをお勧めします。これらのモジュールを切り替えて作業することは非常に便利です。 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
8
xdeepakv

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をインストールしました。その後、私はパッケージをグローバルにインストールすることができました。

8
Suzana

からの簡単な解決策

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

Setup_x.xの値をsetup_5.xのように変更することでバージョンを指定できます。

5

システムはパスノードjs binaryを検出できません。

1.どのノード

2. nodejsへのソフトリンクノード

ln -s [the path of nodejs] /usr/bin/node 

/ usr/binが実行パスにあると仮定しています。それからあなたはあなたのコマンドラインにnodeまたはnpmとタイプすることによってテストすることができ、そしてすべてが今うまくいくはずです。

4
frostcs

あなたが持っているどのノードバージョンでもアンインストールする

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

今、あなたはあなたが望むノードのどんなバージョンでもインストールすることができて、そしてバージョン間で切り替えることができます。

4

/ 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/ /

その後、あなたは簡単にパッケージをインストールすることができます。パッケージをインストールするためにこれはあなたを助けるかもしれません

http://array151.com/blog/npm-node-package-manager/ /

1
Dinesh Jain

問題はインストーラにはありません
nodejsをnodeに置き換えるか、パスを/ usr/bin/nodejsから/ usr/bin/nodeに変更してください。

1
Vinayk93

私にとっての修正はnode *パッケージとnpmパッケージを削除することでした。

その後、以下のように新規インストールします。

Sudo apt-get install autoclean
Sudo apt-get install nodejs-legacy
npm install
1
Jimmy

ln -s nodejsにリンク/usr/binノードを作成すると、これで問題が解決します。

0
Nitish Agarwal