sudo:npm:コマンドが見つかりません


201

ノードを最新バージョンにアップグレードしようとしています。http://davidwalsh.name/upgrade-nodejsの指示に従っています

しかし、私がするとき:

sudo npm install -g n

エラーが発生します:

sudo: npm: command not found

npmはsudoなしで動作します。私がする時:

whereis node

そうですか:

node: /usr/bin/node /usr/lib/node /usr/bin/X11/node /usr/local/node

ランニング:

which npm

ショー:

/usr/local/node/bin/npm

私はhttps://stackoverflow.com/a/5062718/1246159で解決策を試しました

しかし、まだ同じエラーが発生します。/ etc / sudoersファイルも確認しました。関連する行は次のとおりです。

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

これは私には元気に見えます。どうすればNPMをsudoコマンドで動作させることができますか?


4
これは機能しますか?sudo /usr/bin/npm install -g n
robertklep 2015

2
ノードを再インストールできますか?npmを削除したようです。
Jeff Sloyer、2015

1
にを追加/usr/local/node/binした可能性がありますが$PATHnpmにインストールする必要があります/usr/local/bin。最初のディレクトリがsecure_pathそこにないのはなぜそれsudoが見つからないかを説明するものではありません。
robertklep 2015

1
nvmここでUbuntu を使用-@robertklepコメントで、私は試してみましたがうまくいきsudo /home/${user}/.nvm/version/node/${version}/bin/npm installました。
Stav Pan Geffen

2
以下のパッケージから再インストールすることで問題を解決しました。nodejs.org/en/download
Marghoob Suleman

回答:


125

npmファイルはにあるはず/usr/local/bin/npmです。そこにない場合は、パッケージを使用してnode.jsをWebサイトに再度インストールします。これは私の場合にはうまくいきました。


どうも。osがインストールされていない他のデータドライブにノードをインストールすると、このパスが見つかりません。
Hardik Darji 2018

1
macbの場合、homebrewを使用します。2つのステップは、(1)どのノード(2)どちらのnpmが/ usr / local / binにあるかです(homebrewは/ symlinks node + npmをインストールします)...それでも問題が解決しない場合は、(1)brew doctor(2)brew reload nodeを試してみてください。パスを確認してください(echo $ PATH)。さまざまなノードのインストールを指す複数のビンの場所が必要です..その場合...クリーンアップ(よりきれいにする)で〜/ .bashrc /〜/ .bash_profileを実行して、/ usr / local / binが存在するようにします。ランダムなノードのインストールを指す別のものなしで読み込まれます。
ジミーMGリム

3
これは部分的な解決策です。この問題は、ノードを手動でインストールしたときに発生します。インストールされている各バイナリを/ usr / binまたは/ usr / local / binにソフトリンクする必要があります。ルートのbashrcにパスを設定しても機能しません。sudo中には読み込まれないため、パッケージをインストールしない限り、これが唯一の方法です。
エビワゴン

@shrimpwagonが言ったように、マニュアルの説明の最後には、「sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / node / usr / bin / node sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / npm / usr / bin / npm sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / npx / usr / bin / npx」
James Nelson

169

私がしなければなりませんでした

sudo apt-get install npm

それは私のために働いた。


6
あなたが表現したいものを理解するのは難しいです。
小さな太陽光、

4
これは時代遅れです。どのような私のために働いたことは、私がここで見つかったこれらのコマンドだった:github.com/nodesource/distributions#debinstall Ubuntuのカール-SL使用#deb.nodesource.com/setup_5.xは | sudo -E bash-sudo apt-get install -y nodejs#rootとしてDebianを使用するcurl -sL deb.nodesource.com/setup_5.x | bash-apt-get install -y nodejs
Hamed

4
@tinysunlight何が不明確かわかりません。opはnpmコマンドが欠落していると言います。このコマンドは、npmコマンドをインストールします。
Velocibadgery

7
これは質問に対する正しい答えではありません。npmすでにインストールされているopから明らかですが、sudoを介して呼び出されたときに到達できません。このソリューションでは、既存のnpmを再インストールします。これは原因を見つけるのではなく、症状と戦うことです。これは一部の人々にとって壊れたものを修正するかもしれないと理解していますが、それは誤解を招きやすく、このように立っています。
ドミニク

4
Ubuntu 18.10にNVMを使用してノードをインストールすると、sudoがnpmをコマンドとして認識しません。sudo apt-get install npm私のために働いた。
AlienKevin

91

MACユーザーの場合、次の手順でうまくいきました。

$ brew update
$ brew uninstall node
$ brew install node
$ brew postinstall 

5
brew uninstall node私のために仕事をしませんでしたが、私はと乗って運ばれるbrew install nodebrew postinstall、それは問題を修正しました。ありがとう
Trevor

2
brew postinstall正確には何をしますか?
Oliver D

Homebrewバージョン2.2.14 brew postinstallでは冗長です
Arslan Khan

63

私も同じ問題を抱えていました。これを修正するコマンドは次のとおりです。

  • sudo ln -s /usr/local/bin/node /usr/bin/node
  • sudo ln -s /usr/local/lib/node /usr/lib/node
  • sudo ln -s /usr/local/bin/npm /usr/bin/npm
  • sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf

2
CentOS 7で私のために働いた
hirikarate

4
私のために働いたUbuntu 16.04.1 LTS。私はNVMを使用しているため、最初のパスはNVMがノードとnpmをインストールした場所へのパスでした(パスにはバージョンが含まれています%HOME%/.nvm/versions/node/v7.4.0/bin/npm)。パスのバージョンがどのように変化するかにより、NVMを使用して更新するたびにこの回答を参照する必要があるのは残念です
kas

1
これも私にとってそれを解決しました!元々はスタックオーバーフローに投稿されました:EC2の場合:sudo nodeコマンドが見つかりませんが、sudoのないノードは問題ありません
Dominic

2
@kasなどsudo ln -s $(whereis node) /usr/bin/node 。あなたのbashプロファイルで。
Aravind Voggu

AWS ec2インスタンスで私のために働いた。
Chirag Purohit 2018

26

警告(編集)

を行うことchmod 777は、かなり過激な解決策です。最初にこれらを1つずつ試して、うまくいったら停止します。

  • $ sudo chmod -R 777 /usr/local/lib/node_modules/npm
  • $ sudo chmod -R 777 /usr/local/lib/node_modules
  • $ sudo chmod g+w /usr/local/lib
  • $ sudo chmod g+rwx /usr/local/lib

$ brew postinstall node 問題が発生する唯一のインストール部品です

Permission denied - /usr/local/lib/node_modules/npm/.github

だから私は

// !! READ EDIT ABOVE BEFORE RUNNING THIS CODE !!
$ sudo chmod -R 777 /usr/local/lib
$ brew postinstall node

とビオラ、npmがリンクされました

$ npm -v
3.10.10

追加

libで使用-R 777する場合、ネストされたファイルとディレクトリをデフォルト設定に設定することをお勧めします。

  • $ find /usr/local/lib -type f -print -exec chmod 644 {} \;
  • $ find /usr/local/lib -type d -print -exec chmod 755 {} \;
  • $ chmod /usr/local/lib 755

3
@Jacksonkr ..... local / libフォルダー全体をchmoding 777することをお勧めしましたか?
sfratini 2017

chmodこのディレクトリはどうあるべきですか?
tim_xyz 2017

1
@tim_xyz drwxr-xr-xはlibのデフォルトです。つまり-R、フォルダを元に戻すときに再帰機能を使用しないでください。
Jacksonkr

ありがとう!sudo chmod -R 777 / usr / local / lib / node_modulesがうまくいった
Hisagr


8

CentOSユーザーの場合、これは私にとってはうまくいきます:

sudo yum install npm

1
このアプローチの問題点は、Fedora、例えば、それは非常にDNF / yumのリポジトリに古くなっていることである
ACV

2
:CentOSの7上では、EPELは、最初にレポ有効にする必要がありますyum install epel-release; yum install npm
hudolejev

8

npmパッケージをsudo権限でグローバルにインストールするに/usr/bin/npmは、が使用可能である必要があります。npm他のディレクトリに存在する場合は、次のようなソフトリンクを作成します。

sudo ln -s /usr/local/bin/npm /usr/bin/npm

Fedora 25、node8.0.0、npm5.0.0で動作します


6

macOSでは、これは私のために働きました:

brew reinstall node

1
質問にタグが付けられていることに気付いて申し訳ありませんunixが、「macos npmコマンドが見つかりません」の上位のGoogle検索結果であるため、参考になるかもしれません
friederbluemle

5

ノードをインストールした後のdebianの場合

curl -k -O -L https://npmjs.org/install.sh    
ln -s /usr/bin/nodejs /usr/bin/node  
sh install.sh

5

node / npmをnvmとともにインストールした場合、いずれかのパッケージを使用する前に、nvm環境構成ファイルを実行する必要があります。

これは通常〜/ .nvm / nvm.shにあります。

これを自動的に実行するには、以下を含めます。

source ~/.nvm/nvm.sh

ユーザーの.bash_profileファイル

その後、そのユーザーでsudoを使用する場合は、必ず-iパラメータを含めて、sudoでユーザー環境を設定してください。例えば

sudo -iu jenkins npm install grunt-cli

4

単に再インストールします。

RHEL、CentOS、Fedoraの場合

sudo yum remove nodejs npm
sudo dnf remove nodejs npm   [On Fedora 22+ versions]

その後

yum -y install nodejs npm
dnf -y install nodejs npm   [On Fedora 22+ versions]

簡単!.. nodeとnpmの両方が魅力のように動作します!


3

私はこの問題を

apt-get install npm2deb

1
この答えは何ですか?npm2debはサードパーティ
Beau Bouchard

1
ソースから直接npmを使用するよりもサードパーティが侵害される可能性が高いため、完全に「信頼」されているわけではありません。私はnpm2debについては何も知りませんが、会社で使用したい場合は、おそらく監査について厳格であると考えてください
Kyle Calica-St

それは誰にとっても明らかです。
ИгорьДемянюк

1

同じ問題がありましたが、ノードのインストール中にnpmパッケージマネージャーがインストールされなかったことが原因でした。これは、次の間違いが原因で発生しました。インストールプロセスで「カスタムセットアップ」と呼ばれるステップがあり、ここで次のいずれかを選択できます。1)Node.jsランタイム(これはデフォルトで選択されています)。2)npmパッケージマネージャー3)オンラインドキュメントのショートカット。4)パスに追加します。そのまま続行すると、npmパッケージマネージャーがインストールされないため、エラーが発生します。

解決策:これらのオプションが表示されたら、npmパッケージマネージャーを選択します。これでうまくいきました。


1

ノードパッケージをダウンロードしてどこかに抽出した/opt場合は、内部にシンボリックリンクを作成できます/usr/local/bin

/usr/local/bin/npm -> /opt/node-v4.6.0-linux-x64/bin/npm
/usr/local/bin/node -> /opt/node-v4.6.0-linux-x64/bin/node

1

私もホームステッドで同じ問題を抱えており、多くの方法を試しました。私が試した

sudo apt-get install nodejs

次のエラーが発生します。

The following packages have unmet dependencies:
 npm : Depends: nodejs but it is not going to be installed
       Depends: node-abbrev (>= 1.0.4) but it is not going to be installed
       Depends: node-ansi (>= 0.3.0-2) but it is not going to be installed
       Depends: node-ansi-color-table but it is not going to be installed
       Depends: node-archy but it is not going to be installed
       Depends: node-block-stream but it is not going to be installed
       Depends: node-fstream (>= 0.1.22) but it is not going to be installed
       Depends: node-fstream-ignore but it is not going to be installed
       Depends: node-github-url-from-git but it is not going to be installed
       Depends: node-glob (>= 3.1.21) but it is not going to be installed
       Depends: node-graceful-fs (>= 2.0.0) but it is not going to be installed
       Depends: node-inherits but it is not going to be installed
       Depends: node-ini (>= 1.1.0) but it is not going to be installed
       Depends: node-lockfile but it is not going to be installed
       Depends: node-lru-cache (>= 2.3.0) but it is not going to be installed
       Depends: node-minimatch (>= 0.2.11) but it is not going to be installed
       Depends: node-mkdirp (>= 0.3.3) but it is not going to be installed
       Depends: node-gyp (>= 0.10.9) but it is not going to be installed
       Depends: node-nopt (>= 3.0.1) but it is not going to be installed
       Depends: node-npmlog but it is not going to be installed
       Depends: node-once but it is not going to be installed
       Depends: node-osenv but it is not going to be installed
       Depends: node-read but it is not going to be installed
       Depends: node-read-package-json (>= 1.1.0) but it is not going to be installed
       Depends: node-request (>= 2.25.0) but it is not going to be installed
       Depends: node-retry but it is not going to be installed
       Depends: node-rimraf (>= 2.2.2) but it is not going to be installed
       Depends: node-semver (>= 2.1.0) but it is not going to be installed
       Depends: node-sha but it is not going to be installed
       Depends: node-slide but it is not going to be installed
       Depends: node-tar (>= 0.1.18) but it is not going to be installed
       Depends: node-underscore but it is not going to be installed
       Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

最後に私は試してみました

sudo apt-get dist-upgrade

それはうまくいきました。

root@homestead:/usr/local/bin# npm -v
3.10.10

root@homestead:/usr/local/bin# node -v
v6.13.0

1

私の解決策は:

sudo -E env "PATH=$PATH" n stable

私にとってはうまくいきます。

ここで見つけました: https //stackoverflow.com/a/29400598/861615

これは、デフォルトのグローバルパッケージディレクトリを変更したために発生します


0

visudoを使用して「secure_path」を編集し、npmバイナリパスをsudoパスに追加

「sudo npm」が機能するようになりました


0

ノードを完全に削除します。

  brew uninstall --force node

再インストール:

brew install node;
which node # => /usr/local/bin/node
export NODE_PATH='/usr/local/lib/node_modules'

0

これがrh-*私のために働いたパッケージを使用する誰にとっても役立つかもしれない場合:

sudo ln -s /opt/rh/rh-nodejs8/root/usr/bin/npm /usr/local/bin/npm

0

node.jsにある.tarファイルを使用してnode.jsをインストールしたので、ノードディレクトリの場所を次の場所に置く必要がありました。

〜/ .bashrc

コマンドを使用して通常のユーザーからルートに変更することによるルートの:

sudo -i

次に、次のように.bashrcファイルに抽出したノードへのパスを追加する必要がありました。 ここに画像の説明を入力してください

次に、.bashrcを使用して

。〜/ .bashrc

その後

npm: command not found

去った


0

私は仕事のために世界的にパッケージをインストールする際にEACCESパーミッションエラーの解決

アクセス許可エラーの可能性を最小限に抑えるために、別のディレクトリを使用するようにnpmを構成できます。この例では、ホームディレクトリに隠しディレクトリを作成して使用します。

コンピュータをバックアップします。コマンドラインのホームディレクトリに、グローバルインストール用のディレクトリを作成します。

 mkdir ~/.npm-global

新しいディレクトリパスを使用するようにnpmを構成します。

 npm config set prefix '~/.npm-global'

任意のテキストエディターで〜/ .profileファイルを開くか作成し、次の行を追加します。

 export PATH=~/.npm-global/bin:$PATH

コマンドラインで、システム変数を更新します。

 source ~/.profile

新しい構成をテストするには、sudoを使用せずにパッケージをグローバルにインストールします。

 npm install -g jshint

0

私にとって、Homebrewを使用した上記の方法はいずれもmacOSでは機能しませんでした。そこで、Homebrewを使用してノードをアンインストールし、https://nodejs.org/en/download/からノードパッケージをダウンロードしてインストールしました。それは魅力のように働きました。


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