• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:sudo: npm: コマンドが見つかりません)

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

このQ&Aのポイント
  • npmコマンドがsudo環境で見つからない
  • 一般ユーザ環境とsudo環境でのnpmの違いについて疑問
  • Cent OSでの環境

質問者が選んだベストアンサー

  • ベストアンサー
  • kteds
  • ベストアンサー率42% (1884/4445)
回答No.3

結論から言えば re97 さんの言うように PATHが通っていないからです。 /etc/sudoers ファイルの下記の部分に Defaults env_keep += "PATH" および /usr/local/bin を 下記のように追加してください。 # Adding HOME to env_keep may enable a user to run unrestricted #commands via sudo. # #Defaults env_keep += "HOME" # この行を追加 Defaults env_keep += "PATH" # npmのディレクトリ /usr/local/bin を追加する Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin --- 追加した環境での sudo 実行結果は添付画像のようになります。

re97
質問者

お礼

回答ありがとうございました。 ・具体的に記述いただき、大変参考になりましたー

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

>$ which npm >~/.nodebrew/current/bin/npm >・パスが通っていないということでしょうか? >・$ npm -v でバージョン表示されるので、パスは通っていると思うのですが… whichコマンドで結果は返ってきていますし、コマンド名だけで起動できているのですからPATHは通っていますよ。 「そのアカウントの環境では」ですが。 >・nodebrewが、sudo環境にインストールされていないってことでしょうか? プロンプトが「$」ですから、おそらく一般ユーザでしょう。 そしてwhichの結果が「~」から始まっていますので、そのユーザのホームディレクトリ以下に入っています。 なので、管理者アカウントにとっては「そんなモン知らん」状態です。 # ついでにPATHは通っていないでしょう。 >・sudoって、一般ユーザの上位という位置づけではない? 権限は上位でしょうが、環境まで上位であるというワケではないかと。 PATHも下位ユーザ(一般ユーザ)のホームディレクトリ以下まで通っていることはまずありませんしね。 # suコマンドでオプションなしで昇格すればPATHなどは引き継がれますよ。 # その変わりシステムコマンドの入っているディレクトリへのPATHは入りませんが。 ## 「suでrootになったのにfdiskコマンドが無いってどういうことだ~!!」とかね。 管理者アカウントのPATHが一般ユーザのホームディレクトリ以下まで含むと…なかなか楽しいですよ。 例えば、~/bin/ls にddコマンドでsdaを0で埋めるスクリプトなんか置いてみたりすると、管理者ユーザがlsでファイル一覧確認するとハッピーになれるかも知れないとか。 # 競合会社にとってはウハウハですね。うまくすれば乗っ取り時のログも消えてさらにオイシイ。 というワケで、npmコマンドが使えるのはソレをインストールしたユーザだけです。 管理者(root)でインストールしていない以上は仕方ないかと。 CentOSなのですからRPMパッケージとかで導入するべきだったと思われますけどね。 公式のリポジトリにパッケージがあったかは不明ですが。 http://qiita.com/you21979@github/items/4efd9fc4363573191b5c とか見ると…epelリポジトリ導入していればそっちから入れられたかと思われます。 # バージョンが最新かどうかは不明。また、コンフリクトする可能性もないとは言えない。

re97
質問者

お礼

回答ありがとうございました。 >権限は上位でしょうが、環境まで上位であるというワケではないかと ・基本的なことかもしれませんが、今回の回答を読んで初めて知りました >PATHも下位ユーザ(一般ユーザ)のホームディレクトリ以下まで通っていることはまずありませんしね ・物凄く勘違いしていました ・大変勉強になりましたー

すると、全ての回答が全文表示されます。
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

>・sudo環境は、一般ユーザ環境の上に位置しているので、一般ユーザ環境でインストールされているものは必ずsudo環境で使用できると思っていたのですが、違うのでしょうか? どこにインストールされているか…次第じゃないですかね。 ホームディレクトリの下にbinディレクトリを作って、そこに入っていたら無理ですし。 which npm でどう表示されます?

re97
質問者

補足

回答ありがとうございました。 $ which npm ~/.nodebrew/current/bin/npm ・パスが通っていないということでしょうか? ・$ npm -v でバージョン表示されるので、パスは通っていると思うのですが… ・nodebrewが、sudo環境にインストールされていないってことでしょうか? >ホームディレクトリの下にbinディレクトリを作って、そこに入っていたら無理 ・初めて知りました ・sudoって、一般ユーザの上位という位置づけではない? ・ここら辺りのsudo挙動を分かりやすく解説してるページって、どこかにないでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A