Я только что установил nodejs на новый микро-экземпляр EC2.
Я установил его нормально, ./configure -> make -> sudo make install.
Проблема: когда я запускаю «узел» под пользователем ec2, он работает отлично. Когда я запускаю «sudo node», он не работает.
Я узнал, что узел находится в:
[ec2-user@XXXX ~]$ whereis node
node: /usr/local/bin/node /usr/local/lib/node
и текущий путь
[ec2-user@XXXX ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/opt/aws/bin:/home/ec2-user/bin
но путь sudo
[root@ip-10-112-222-32 ~]# echo $PATH
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin
затем я попытался отредактировать корневой PATH, чтобы включить пути к узлу, поэтому «узел» запускается, когда я вхожу в систему как root, но он все равно не работает, когда я вхожу в систему как пользователь ec2 и запускаю «sudo node» ,
Мне это нужно для правильной установки npm. Есть идеи, как включить путь к узлу при запуске «sudo node»?
node.js
bash
amazon-ec2
sudo
Foobar
источник
источник
Ответы:
Да, это немного раздражает, но вы можете исправить это некоторыми ссылками:
Могло быть и больше, но это все, что я нашел до сих пор. Отсутствие node-waf приведет
npm
к сбою некоторых установок с довольно загадочным сообщением об ошибке.источник
node-waf
причинnpm rebuild
для ошибки. Есть ли чистый способ исправить это? Нужно ли мне?/usr/local
не существует. Однако я сделал каталог ~ / local. 3) После удаления/usr
иsudo
каждой из этих строк кода и запускать их через мою консоль, ничего не изменилось.Я добавил
/usr/local/bin
кsecure_path
в/etc/sudoers
Затем измените эту строку:
Для того, чтобы:
источник
это происходит потому, что исполняемый файл узла не найден в / usr / bin. Итак, следуйте инструкциям:
whereis node
в моем случае:
node: /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node
сделать символическую ссылку для узла:
sudo ln -s /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node /usr/bin/node
Это сделано!
источник
sudo ln -s /home/ec2-user/.nvm/versions/node/v8.11.3/bin/npm /usr/bin/npm
как я пытался выполнить sudonpm install
на моем экземпляре aws ec2 после перехода по ссылкеПочему бы не использовать абсолютный путь к узлу? Если вы планируете использовать сценарий выскочки, ему в любом случае понадобится абсолютный путь.
источник
ln
решения.попробуйте следующее:
источник
secure_path
установленных вsudoers
файле.Вы можете передать полный путь к
node
исполняемому файлу из родительского (не-sudo shell) с помощьюwhich
команды.источник
Для меня это сработало, просто сменив владельца папки узла с root на пользователя ec2 (вошедшего в систему как пользователь ec2).
(Примечание: я создал свою папку узла в / var / lib /)
затем
должен работать нормально (конечно, при условии, что вы установили npm ok!)
источник
Вот подход, который не использует символические ссылки и не требует root:
Тогда я сделал:
Здесь обсуждаются преимущества неиспользования узла с правами root:
http://increaseyourgeek.wordpress.com/2010/08/18/install-node-js-without-using-sudo/
Он соответствует:
https://github.com/joyent/node/wiki/Installation
источник
Как насчет использования sudo $ (which node) вместо sudo node?
источник
В моем случае Node был установлен без префикса sudo . Итак, узел был недоступен для суперпользователя, поэтому он не работает
sudo node server
источник
Войдите как root с
а затем выполните стандартные шаги
источник
Я не знаю, правильный ли это путь, но я так поступил ...
Это установило npm, и теперь я могу устанавливать любые пакеты, которые хочу.
источник