У меня проблема.
В последнее время я установил nodejs
(если вы не знаете, что это такое, это не имеет значения, может быть что-то еще) из исходников в /opt /node:
$ ls -la /opt
...
lrwxrwxrwx 1 root root 11 2012-07-25 13:48 node -> node-0.6.3/
drwxr-xr-x 6 root root 4096 2012-07-25 13:48 node-0.6.3
...
Итак, двоичные файлы находятся в /opt/node/bin
:
$ ls -la /opt/node/bin
...
lrwxrwxrwx 1 root root 38 2012-06-20 11:44 npm -> ../lib/node_modules/npm/bin/npm-cli.js
...
Как видите, npm
есть.
Чтобы было проще использовать его из командной строки, я исправил $PATH
внутри скрипта .bashrc
:
HOME=$HOME:...:/opt/node/bin
и то же самое сделал с .bashrc
:
# which npm
/opt/node/bin/npm
Но если я запускаю npm с помощью sudo, npm
не будет найден:
$ sudo which npm
$ sudo npm -g install uglify-js
sudo: npm: command not found
Итак, почему это происходит? Как получить то, что я хочу?
Благодарю.
ОБНОВЛЕНИЕ: Следуя совету Пола, я добавил
Defaults env_keep = PATH
в /etc/sudoers
но проблема все равно сохраняется
$ echo $PATH
... :/opt/node/bin
$ sudo su -
#
# sudo -V
...
Environment variables to preserve:
XAUTHORIZATION
XAUTHORITY
TZ
PS2
PS1
PATH
...
Итак, директива по Defaults
выполнила свою работу, но я получаю то же самое sudo: npm: command not found