読者です 読者をやめる 読者になる 読者になる

@半径とことこ60分

人間の認知範囲なんてそんなもんさと、鳥が囀った

Plamo-5.2/sudo でパスが引き継がれない(解決)

node.js と Grunt で Bootstrap less ファイルをコンパイルする(自動化)

と、npm を使って node.js のモジュールを入れようとしてた時に、-g 付でグローバルに入れようとすると当然 /user/local/bin に書き込み権限がないと叱られるわけですが、ああそうかと sudo しても今度は「sudo: npm: コマンドが見つかりません」と受け付けてくれませんでした。

面倒だなあととりあえず su -(su でもダメ)で済ましてきたのですが、そういえば以前からそうだなとこの際調べることにしました。

$ npm -v
1.4.28
$ sudo npm -v
パスワード:
sudo: npm: コマンドが見つかりません

こうなってしまうので、パスを調べてみると、

$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/games/bin:/usr/games:/usr/heimdal/bin:/usr/java/jre/bin:/opt/mysql/bin

$ su
# echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin

と、リセットされてしまっています。

いろいろググってみますと、sudoers に Defaults env_keep += "PATH" を追記すればパスが引き継がれるとあり、試してみたのですが変わりません。で、こちらのサイトにたどり着き解決です。

sudoers に Defaults exempt_group="GROUP1 GROUP2 ..." を追記すればいいとのことです。指示通りにやってみました。

# groupadd developer
# gpasswd --add ユーザ名 developer 
# visudo
...
Defaults exempt_group="developer"

 

$ sudo npm -v
1.4.28

パスが引き継がれたようです。