npmの使用中に「No such file or directory」エラーが発生する


34

ここに記載されている手順を使用して、ノードとnpmをインストールしました

ノードを正常に使用することができました。ただし、「Formidable」ノードモジュールをインストールしようとすると、次のエラーが表示されます。

$npm install formidable
bash: /usr/local/bin/npm: /usr/local/bin/node: bad interpreter: No such file or directory

を実行するwhich npmと、次の出力が得られます。

$which npm
/usr/local/bin/npm

ここでnpmの何が間違っているのか手がかりがありません-これを修正する方法についてのアイデアはありますか?


Ask Ubuntuへようこそ!Nodeをにインストールしました/usr/local/bin/。リンクする手順で使用したパッケージは、これを実行しません。ソースから別のノードもインストールしたと思います。ストーリー全体を教えてください。
gertvdijk

@gertvdijkまあ、最初にインストールされたノード0.8.14がありました。これを0.8.18にアップグレードしたかった。それから走りました$sudo apt-get remove --purge nodejs npmが、これはうまくいきませんでした。node --version0.8.18をインストールした後でも0.8.14が表示されました。だから、私がやったことは、今は見つけられない投稿をフォローすることでした-それは基本的に指示されたwhich node後に続きrm -r /usr/local/bin/...ます-基本的にそのディレクトリの下のいくつかのノード関連のファイルです。さて、この後、ノードを再インストールしましたが、それは更新されたバージョンでした。正常に動作しますが、npmはそうではありません。
user109187

ええ、これはソースからインストールしたときに起こることです。パッケージ管理とユーザーとしてのあなたを混乱させます。何をしているのかわからない場合にのみ、ソフトウェアをパッケージとしてインストールしてください。この以前のバージョンをインストールするために使用したスクリプトでアンインストール手順を使用して、適切にアンインストールします。また、質問を 編集して詳細情報を提供してください。これはディスカッションフォーラムではなく、Q&Aサイトです。:)
gertvdijk

- @gertvdijk私は手動でファイルを削除するように指示ポストたstackoverflow.com/a/5917184/1907800を。ここのパスは/ usr / bin / node
user109187

回答:


51

@gertvdijkヒントを使用して、スクリプトを使用してNPMをアンインストールしました。

rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/npm*

ここで見つけることができます

上記を実行した後でも、別のエラーが発生しました。

$ npm install formidable  
bash: /usr/local/bin/npm: No such file or directory

だから、私はhash -rターミナルで実行し(NPMはアップグレード後に実行されませんでした指示に従って)、出来上がりました-それは機能しました。NPMが機能するようになりました!


1
ここでの唯一の有用なことはhash、別のノード/ npmを指すために単に使用できる発見でした(ノードの複数のバージョンで作業したい場合はどうなりますか?)
user309383

美しいゲストユーザー。
LM_Fielding

4
ハッシュ-rは私を救った
-diogo.abdalla

何をしますかhash!?
チャンジュンキム

11

Ubuntuおよび一部のLinuxディストリビューションは、ノードのインタープリターをとして/usr/bin/nodejsではなくとしてインストールします/usr/local/bin/node

nodejs-legacyから/usr/bin/nodejsへのシンボリックリンクを作成するパッケージをインストールすると、この問題を解決でき/usr/bin/nodeます。

溶液:

sudo apt-get install nodejs-legacy

参照: nodejs-legacyパッケージ


1
思わないnodejs-legacyもう存在しません。
マルティンデラフエンテ

2

少し前にソースから別のバージョンのノードをインストールしたようです。これは、/usr/local/bin現在インストールされていると思われるパスによって示されます。

  1. ソースからインストールしたものをアンインストールします。その方法については、ソースに付属の説明書を参照してください。システムのパッケージ管理で機能しない、インストールされたソフトウェアスクリプトをアンインストールする方法について、単一の方法はありません。
  2. 質問でリンクした手順にリストされているパッケージをインストールします。
  3. which npm現在/usr/binインストールパスとしてリストされていることを確認します。

一般に、ソースからパッケージをインストールする必要はありません。そして、もしそうするなら、ここでパッケージ管理をオーバーライドしているので、それが混乱する結果に注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.