Właśnie zainstalowałem nodejs na nowej instancji micro EC2.
Zainstalowałem go normalnie, ./configure -> make -> sudo make install.
Problem: Kiedy uruchamiam "node" pod ec2-user, działa idealnie. Kiedy uruchamiam „węzeł sudo”, kończy się niepowodzeniem.
Dowiedziałem się, że węzeł jest w:
[ec2-user@XXXX ~]$ whereis node
node: /usr/local/bin/node /usr/local/lib/node
a obecna ścieżka to
[ec2-user@XXXX ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/opt/aws/bin:/home/ec2-user/bin
ale ścieżka sudo jest
[root@ip-10-112-222-32 ~]# echo $PATH
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin
następnie próbowałem edytować główną ścieżkę PATH, aby uwzględnić ścieżki do węzła, więc „węzeł” działa, gdy jestem zalogowany jako root - ale nadal nie będzie działać, gdy zaloguję się jako ec2-user i uruchomię „sudo node” .
Potrzebuję tego, aby zainstalować npm rightfly. Masz jakiś pomysł, jak dołączyć ścieżkę do węzła podczas uruchamiania „węzła sudo”?
node.js
bash
amazon-ec2
sudo
foobar
źródło
źródło
Odpowiedzi:
Tak, jest to trochę denerwujące, ale możesz to naprawić za pomocą kilku linków:
Może być ich więcej, ale to wszystko, na co do tej pory się natknąłem. Brak węzła-waf spowoduje, że niektóre
npm
instalacje zakończą się niepowodzeniem, wyświetlając dość tajemniczy komunikat o błędzie.źródło
node-waf
powodównpm rebuild
do błędów. Czy istnieje czysty sposób, aby temu zaradzić? Czy muszę?/usr/local
nie istnieje. Zrobiłem jednak katalog ~ / local. 3) Po usunięciu/usr
isudo
z każdej z tych linii kodu i uruchomieniu ich przez moją konsolę nic się nie zmieniło.I dodaje
/usr/local/bin
sięsecure_path
w/etc/sudoers
Następnie zmień tę linię:
Do:
źródło
dzieje się tak, ponieważ plik wykonywalny węzła nie został znaleziony w / usr / bin. Więc postępuj zgodnie z instrukcjami:
whereis node
w moim przypadku:
node: /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node
utwórz dowiązanie symboliczne dla węzła:
sudo ln -s /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node /usr/bin/node
Zrobione!
źródło
sudo ln -s /home/ec2-user/.nvm/versions/node/v8.11.3/bin/npm /usr/bin/npm
jak próbowałem zrobić sudonpm install
na mojej instancji aws ec2 po kliknięciu linkuDlaczego nie użyć bezwzględnej ścieżki do węzła? Jeśli planujesz użyć skryptu początkowego, i tak będzie potrzebować bezwzględnej ścieżki.
źródło
ln
rozwiązania.spróbuj następujących rzeczy:
źródło
secure_path
ustawione wsudoers
pliku.Możesz przekazać pełną ścieżkę do
node
pliku wykonywalnego z rodzica (powłoki innej niż sudo) za pomocąwhich
polecenia.źródło
W moim przypadku wystarczyło zmienić własność folderu węzła z roota na ec2-user (zalogowany jako ec2-user).
(Uwaga: utworzyłem folder węzła w / var / lib /)
Następnie
powinno działać dobrze (oczywiście pod warunkiem, że zainstalowałeś npm ok!)
źródło
Oto podejście, które nie używa linków symbolicznych lub wymaga roota:
Potem zrobiłem:
Korzyści wynikające z nieużywania węzła jako root są omówione tutaj:
http://increaseyourgeek.wordpress.com/2010/08/18/install-node-js-without-using-sudo/
Jest wbudowany w:
https://github.com/joyent/node/wiki/Installation
źródło
Co powiesz na użycie „sudo $ (który węzeł)” zamiast „sudo node”?
źródło
W moim przypadku Node został zainstalowany bez prefiksu sudo . Więc węzeł był niedostępny dla superużytkownika, dlatego nie działa
sudo node server
źródło
Wpisz jako root za pomocą
a następnie wykonaj standardowe czynności
źródło
Nie wiem, czy to właściwy sposób, ale tak właśnie zrobiłem ...
Zainstalowałem npm i mogę teraz zainstalować dowolne pakiety, które chcę.
źródło