アプリ版:「スタンプのみでお礼する」機能のリリースについて

■質問
・今、どういう状況になっているのでしょうか?
・npmは、現在のユーザ環境にのみインストールされていて、sudo環境にはインストールされていないということでしょうか?
・sudo環境は、一般ユーザ環境の上に位置しているので、一般ユーザ環境でインストールされているものは必ずsudo環境で使用できると思っていたのですが、違うのでしょうか?
・sudo環境はroot環境とは異なる?

■コマンド履歴
$ npm -v
→バージョン表示される

$ sudo npm install -g ★★
→sudo: npm: コマンドが見つかりません

$ sudo npm -v
→sudo: npm: コマンドが見つかりません

■環境
・Cent OS

A 回答 (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 実行結果は添付画像のようになります。
「sudo: npm: コマンドが見つかり」の回答画像3
    • good
    • 1
この回答へのお礼

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

お礼日時:2014/10/28 19:07

>$ 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/4efd9fc43 …
とか見ると…epelリポジトリ導入していればそっちから入れられたかと思われます。
# バージョンが最新かどうかは不明。また、コンフリクトする可能性もないとは言えない。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

>権限は上位でしょうが、環境まで上位であるというワケではないかと
・基本的なことかもしれませんが、今回の回答を読んで初めて知りました

>PATHも下位ユーザ(一般ユーザ)のホームディレクトリ以下まで通っていることはまずありませんしね
・物凄く勘違いしていました
・大変勉強になりましたー

お礼日時:2014/10/28 19:11

>・sudo環境は、一般ユーザ環境の上に位置しているので、一般ユーザ環境でインストールされているものは必ずsudo環境で使用できると思っていたのですが、違うのでしょうか?



どこにインストールされているか…次第じゃないですかね。
ホームディレクトリの下にbinディレクトリを作って、そこに入っていたら無理ですし。

which npm
でどう表示されます?

この回答への補足

回答ありがとうございました。

$ which npm
~/.nodebrew/current/bin/npm

・パスが通っていないということでしょうか?
・$ npm -v でバージョン表示されるので、パスは通っていると思うのですが…
・nodebrewが、sudo環境にインストールされていないってことでしょうか?

>ホームディレクトリの下にbinディレクトリを作って、そこに入っていたら無理
・初めて知りました
・sudoって、一般ユーザの上位という位置づけではない?
・ここら辺りのsudo挙動を分かりやすく解説してるページって、どこかにないでしょうか?

補足日時:2014/10/28 11:03
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!