Nazwa interpretera NodeJS ( node
) na Ubuntu została zmieniona na z nodejs
powodu konfliktu nazw z innym pakietem. Oto co to jest readme. Debian mówi:
Nadrzędna nazwa polecenia interpretera Node.js to „węzeł”. W Debianie komenda interpretera została zmieniona na „nodejs”.
Zrobiono to, aby zapobiec kolizji przestrzeni nazw: inne komendy używają tej samej nazwy w ich górnej części, na przykład ax25-node z pakietu „node”.
Skrypty wywołujące Node.js jako polecenie powłoki muszą zostać zmienione, aby zamiast tego używać polecenia „nodejs”.
Jednak używanie nodejs psuje instalowanie pakietów za pomocą npm
. Instalacja pakietu kończy się niepowodzeniem z powodu następującego błędu:
sh: 1: node: not found npm WARN This failure might be due to the use of legacy binary "node" npm WARN For further explanations, please read /usr/share/doc/nodejs/README.Debian
Jak sprawić, by npm zrozumiał, że nodejs jest już zainstalowany w systemie, ale nazwa interpretera jest inna?
ln -s nodejs node
w/usr/bin
. Ale to trochę hack.Odpowiedzi:
TL; DR:
Przede wszystkim pozwól mi trochę wyjaśnić sytuację. Latem 2012 r. Opiekunowie Debiana postanowili zmienić nazwę pliku wykonywalnego Node.js, aby zapobiec kolizji przestrzeni nazw z innym pakietem. Była to bardzo trudna decyzja dla Komitetu Technicznego Debiana, ponieważ łamie wsteczną kompatybilność.
Oto cytat z projektu rezolucji Komitetu opublikowanego na liście mailowej Debiana :
Ustęp 2 stanowi rzeczywiste rozwiązanie problemu PO. OP powinien spróbować zainstalować ten pakiet zamiast ręcznie tworzyć dowiązanie symboliczne. Oto link do tego pakietu na stronie indeksu pakietów Debiana .
Można go zainstalować za pomocą
sudo apt-get install nodejs-legacy
.Nie znalazłem żadnych informacji o przyjęciu całości przez programistów NPM, ale myślę, że
npm
pakiet zostanie w pewnym momencie naprawiony inodejs-legacy
stanie się naprawdę spuścizną.źródło
sudo apt-get install nodejs-legacy
Spróbuj połączyć węzeł z nodejs. Najpierw dowiedz się, gdzie jest nodejs
Następnie miękki link do węzła do nodejs
Zakładam, że / usr / bin znajduje się na twojej ścieżce wykonania. Następnie możesz przetestować, wpisując w linii poleceń węzeł lub npm, i wszystko powinno już działać.
źródło
nodejs-legacy
pakietu jest łatwiejsza./usr/bin
chyba że jesteśdpkg
. Właściwym rozwiązaniem (jeśli podoba Ci się to ręczne podejście do symlinkowania) jest utworzenie dowiązania symbolicznego, w/usr/local/bin
którym jest przeznaczone dla lokalnych instalacji i przesłonięć. Wszystko, co robisz ręcznie,/usr/bin
może i zostanie zastąpione przez menedżera pakietów i / lub wprowadzi w błąd.Możesz także zainstalować Nodejs za pomocą NVM lub Nodejs Version Manager. Korzystanie z menedżera wersji ma wiele zalet . Jednym z nich jest to, że nie musisz się martwić tym problemem.
Instrukcje:
Po zainstalowaniu wymaganych pakietów można pobrać skrypt instalacyjny nvm ze strony GitHub projektu. Numer wersji może być inny, ale ogólnie można go pobrać i zainstalować przy użyciu następującej składni:
Spowoduje to pobranie skryptu i uruchomienie go. Zainstaluje oprogramowanie w podkatalogu katalogu domowego w
~/.nvm
. Doda również niezbędne wiersze do~/.profile
pliku, aby go użyć.Aby uzyskać dostęp do funkcji NVM, musisz się wylogować i zalogować ponownie, lub możesz pobrać plik ~ / .profile, aby bieżąca sesja wiedziała o zmianach:
Teraz, gdy masz już zainstalowany NVM, możesz zainstalować izolowane wersje Node.js.
Aby dowiedzieć się, które wersje Node.js są dostępne do instalacji, możesz wpisać:
Jak widać, najnowsza wersja w momencie pisania tego tekstu to v0.11.14. Możesz to zainstalować, wpisując:
Zazwyczaj nvm przełączy się na najnowszą wersję. Możesz wyraźnie powiedzieć nvm, aby używał właśnie pobranej wersji, wpisując:
Gdy instalujesz Node.js przy użyciu nvm, plik wykonywalny nazywa się node. Możesz zobaczyć wersję aktualnie używaną przez powłokę, wpisując:
Kompletny samouczek można znaleźć tutaj
źródło
usr/bin/node
. Tak pobiegłsudo ln -s /home/www/.nvm/v0.10.36/bin/node /usr/bin/node
Zainstaluj
nvm
najpierw za pomocą:Uruchom polecenie
Teraz uruchom to, a to pokaże wszystkie zainstalowane lub inne wersje pakietów:
Zainstalowane pakiety będą zielone. Zainstaluj dowolną wersję:
Sprawdź, gdzie nie jest zainstalowany:
Sprawdź aktualną wersję:
źródło
Połączono zaakceptowaną odpowiedź ze
source ~/.profile
złożonym komentarzem i kilkoma wcześniejszymi poleceniami czyszczenia. Najprawdopodobniej będziesz musiał to zrobićsudo apt-get install npm
później.źródło
dla mnie problem został rozwiązany przez
źródło
Oto inne podejście, którego używam, ponieważ lubię n do łatwego przełączania między wersjami węzłów.
W nowym systemie Ubuntu najpierw zainstaluj węzeł „systemowy”:
Następnie zainstaluj n moduł globalnie:
Ponieważ węzeł systemowy został zainstalowany jako pierwszy (powyżej), system alternatyw może służyć do czystego wskazywania na węzeł dostarczony przez n . Najpierw upewnij się, że system alternatyw nie ma nic dla węzła:
Następnie dodaj węzeł podany przez n :
Następnie dodaj węzeł dostarczony przez system (ten, który został zainstalowany z curl):
Teraz wybierz węzeł dostarczony przez n za pomocą interaktywnego menu (wybierz
/usr/local/bin/node
z menu przedstawionego przez następujące polecenie):Wreszcie, ponieważ
/usr/local/bin
zwykle ma wyższy priorytet w PATH niż/usr/bin
, należy utworzyć następujący alias (wprowadź w .bashrc lub .zshrc), aby węzeł systemu alternatyw miał być skuteczny; w przeciwnym razie węzeł zainstalowany za pomocą nw katalogu / usr / local / bin ma zawsze pierwszeństwo:Teraz możesz łatwo przełączać się między wersjami węzłów za pomocą
n <desired node version number>
.źródło
W Linux Mint 17 wypróbowałem oba rozwiązania (utworzenie dowiązania symbolicznego lub użycie
nodejs-legacy
pakietu) bez powodzenia.Jedyną rzeczą, która w końcu działała dla mnie, było użycie ppa od Chrisa Lei:
Ten zainstalowany węzeł w wersji 10.37 i npm 1.4.28. Następnie mogłem instalować pakiety globalnie.
źródło
Jak już wspominają inni, sugeruję, aby nie używać „sudo apt-get” do instalowania węzła lub jakiejkolwiek biblioteki programistycznej. Możesz pobrać wymaganą wersję ze strony https://nodejs.org/dist/v6.9.2/ i skonfigurować własne środowisko.
Polecę narzędzia takie jak nvm i n , aby zarządzać twoją wersją węzła. Przełączanie i praca z tymi modułami jest bardzo wygodna. https://github.com/creationix/nvm https://github.com/tj/n
Lub napisz podstawową wersję bash, aby pobrać zip / tar, wyodrębnić folder przenoszenia i utworzyć miękki link. Ilekroć musisz zaktualizować, po prostu wskaż stary miękki link do nowej pobranej wersji. Tak jak stworzyłem dla siebie, możesz polecić: https://github.com/deepakshrma/NodeJs-4.0-Reference-Guide/blob/master/nodejs-installer.sh
źródło
Proste rozwiązanie stąd
Możesz określić wersję, zmieniając wartość setup_x.x, na przykład na setup_5.x
źródło
Twój system nie jest w stanie wykryć pliku binarnego js węzła ścieżki.
1. który węzeł
2. Następnie węzeł miękkiego łącza do nodejs
Zakładam, że / usr / bin znajduje się na twojej ścieżce wykonania. Następnie możesz przetestować, wpisując w linii poleceń węzeł lub npm, i wszystko powinno już działać.
źródło
Odinstaluj dowolną wersję węzła
zainstaluj nvm (Node Version Manager) https://github.com/creationix/nvm
Teraz możesz zainstalować dowolną wersję węzła i przełączać się między wersjami.
źródło
nvm
pamiętaj, że pakiet nodejs-legacy to v0.10.25. (a przynajmniej tak to widziałem, gdy próbowałem).Naprawiłem to rozłączanie / usr / sbin / node (który jest powiązany z pakietem ax25-node), a następnie utworzyłem link do nodejs używając tego w wierszu poleceń
Ponieważ pakiet taki jak karma nie działa z nazwą nodejs, jednak zmieniam pierwszą linię skryptu karmy z węzła na nodejs, ale wolę rozwiązać ten problem raz na zawsze
źródło
Dla mnie poprawką było usunięcie pakietów node *, a także pakietów npm.
Następnie nowa instalacja jako:
źródło
sudo apt-get autoclean
robi „to samo” niżsudo apt-get install autoclean
Problem nie występuje w instalatorze
zastąp nodejs węzłem lub zmień ścieżkę z / usr / bin / nodejs na / usr / bin / node
źródło
To jest twój węzeł nie jest poprawnie zainstalowany, najpierw musisz odinstalować węzeł, a następnie zainstalować ponownie. Aby zainstalować węzeł, może to pomóc http://array151.com/blog/nodejs-tutorial-and-set-up/
potem możesz łatwo zainstalować pakiety. Aby zainstalować pakiety, może ci to pomóc
http://array151.com/blog/npm-node-package-manager/
źródło
możesz utworzyć
ln -s nodejs
węzeł łącza w/usr/bin
nadziei, że to rozwiąże Twój problem.źródło