Nie można zainstalować pakietów za pomocą menedżera pakietów węzłów w Ubuntu

Nazwa interpretera NodeJS (node) na Ubuntu została zmieniona na nodejs z powodu konfliktu nazwy z innym pakietem. Oto, co czytam.debian mówi:

Nazwa węzła.polecenie interpretera js to "node". W Debianie polecenie interpretera zostało zmienione na "nodejs".

Zostało to zrobione, aby zapobiec kolizji przestrzeni nazw: inne polecenia używają ta sama nazwa w ich upstreamach, takich jak ax25-node z " node" paczka.

Skrypty wywołujące węzeł.js jako polecenie powłoki należy zmienić na użyj polecenia "nodejs".

Jednakże, użycie nodejs zmusza Instalowanie pakietów za pomocą npm. Instalacja pakietu nie powiodła się z następującym błędem:

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?

Author: Sankar, 2014-01-16

17 answers

TL; DR:

sudo apt-get install nodejs-legacy

Przede wszystkim pozwól mi wyjaśnić sytuację trochę. Latem 2012 roku opiekunowie Debiana postanowili zmienić nazwę węzła.wykonywalny js, aby zapobiec kolizji przestrzeni nazw z innym pakietem. Była to bardzo trudna decyzja dla Komitetu Technicznego Debiana, ponieważ łamie ona kompatybilność wsteczną.

Oto cytat z projektu rezolucji Komitetu, opublikowanego na liście dyskusyjnej Debiana :

  1. Pakiet nodejs zmienić na / usr / bin / nodejs, a nie / usr / bin / node. Pakiet powinien zadeklarować zerwanie: związek z wszystkie pakiety w Debianie, które odwołują się do /usr/bin/node.

  2. Pakiet źródłowy NodeJS dostarcza również pakiet binarny NodeJS-legacy At Priority: extra, który zawiera/usr/bin / node jako dowiązanie symboliczne do / usr / bin / nodejs. Żaden pakiet w archiwum nie może zależeć ani polecać pakiet NodeJS-legacy, który jest dostarczany wyłącznie dla upstream
    kompatybilność. Pakiet ten deklaruje również: związek z pakietem węzłów.

<...>

Paragraf 2 jest faktycznym rozwiązaniem problemu OP. OP powinien spróbować zainstalować ten pakiet zamiast ręcznie wykonywać dowiązania symboliczne. Poniżej znajduje się 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 zaadoptowaniu całości przez programistów NPM, ale Myślę, że npm pakiet zostanie w pewnym momencie naprawiony i nodejs-legacy stanie się prawdziwym dziedzictwem.

 1058
Author: vbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-13 05:04:51

Spróbuj połączyć węzeł z nodejs. Najpierw dowiedz się, gdzie jest nodejs

whereis nodejs

Następnie soft link node do nodejs

ln -s [the path of nodejs] /usr/bin/node 

Zakładam, że /usr / bin jest w twojej ścieżce wykonania. Następnie możesz przetestować wpisując node lub npm w linii poleceń i wszystko powinno działać teraz.

 107
Author: leorex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-03 15:33:47

Możesz również zainstalować Nodejs używając NVM lub NodeJS Version Manager korzystanie z menedżera wersji jest bardzo wiele } korzyści . Jednym z nich jest to, że nie musisz się martwić o ten problem.


Instrukcje:


sudo apt-get update
sudo apt-get install build-essential libssl-dev

Po zainstalowaniu wymaganych pakietów, możesz ściągnąć skrypt instalacji NVM ze strony GitHub projektu. Numer wersji może być inny, ale ogólnie można Pobierz i zainstaluj go z następującą składnią:

curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh

Spowoduje to pobranie skryptu i uruchomienie go. Zainstaluje oprogramowanie w podkatalogu katalogu domowego pod adresem ~/.nvm. Doda również niezbędne linie do pliku ~/.profile, aby go użyć.

Aby uzyskać dostęp do funkcji nvm, musisz się wylogować i zalogować ponownie, lub możesz pobrać~/.plik profilu, aby bieżąca sesja wiedziała o zmianach:

source ~/.profile

Teraz, gdy masz nvm zainstalowany, można zainstalować izolowany węzeł.wersje js.

Aby dowiedzieć się o wersjach Node.js, które są dostępne do instalacji, można wpisać:

nvm ls-remote
. . .

v0.11.10
v0.11.11
v0.11.12
v0.11.13
v0.11.14

Jak widzisz, najnowsza wersja w momencie pisania tego tekstu to v0. 11. 14. Można go zainstalować wpisując:

nvm install 0.11.14

Zazwyczaj nvm przełączy się na Ostatnio zainstalowaną wersję. Możesz wyraźnie powiedzieć nvm, aby używała właśnie pobranej wersji, wpisując:

nvm use 0.11.14

Podczas instalacji Node.js using nvm, plik wykonywalny nazywa się node. Możesz zobaczyć wersję aktualnie używaną przez powłokę, wpisując:

node -v

Samouczek comeplete można znaleźć tutaj

 41
Author: Eduardo Dennis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-12 20:10:11
  1. Zainstaluj nvm najpierw używając:

    curl https://raw.githubusercontent.com/creationix/nvm/v0.11.1/install.sh | bash
    
  2. Uruchom polecenie

    source ~/.profile
    
  3. Teraz uruchom to, a to pokaże wszystkie zainstalowane lub inne wersje pakietów:

    nvm ls-remote
    
  4. Zainstalowane pakiety będą na Zielono. Zainstaluj dowolną wersję:

    nvm install 6.0.0
    
  5. Sprawdź gdzie nie jest zainstalowany:

    which node
    
  6. Sprawdź aktualną wersję:

    node -v
    
    n=$(which node);
    n=${n%/bin/node}; 
    chmod -R 755 $n/bin/*; 
    sudo cp -r $n/{bin,lib,share} /usr/local
    
 15
Author: Ritesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-12 11:19:27
sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs-legacy
sudo apt-get --purge remove nodejs

sudo apt-get install nodejs-legacy
source ~/.profile

Połączył zaakceptowaną odpowiedź z {[1] } z komentarza, który został złożony i niektóre polecenia czyszczenia wcześniej. Najprawdopodobniej będziesz również musiał sudo apt-get install npm po.

 12
Author: Xiao Peng - ZenUML.com,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-08 03:53:07

Oto inne podejście, którego używam, ponieważ lubię n do łatwego przełączania między wersjami węzłów.

Na nowym systemie Ubuntu najpierw zainstaluj węzeł 'system':
curl -sL https://deb.nodesource.com/setup | sudo bash -

Następnie zainstaluj N moduł globalnie:

npm install -g n

Ponieważ węzeł systemowy został zainstalowany jako pierwszy (powyżej), system alternatywny może być użyty do czystego Wskazywania węzła dostarczonego przez n . Najpierw upewnij się, że system alternatyw nie ma nic dla węzła:

update-alternatives --remove-all node

Następnie dodaj węzeł dostarczony przez n :

update-alternatives --install /usr/bin/node node /usr/local/bin/node 1

Następnie Dodaj węzeł dostarczony przez system (ten, który został zainstalowany z curl):

update-alternatives --install /usr/bin/node node /usr/bin/nodejs 2

Teraz wybierz węzeł dostarczony przez n za pomocą interaktywnego menu (wybierz /usr/local/bin/node z menu przedstawionego przez następujące polecenie):

update-alternatives --config node

Wreszcie, ponieważ /usr/local/bin zwykle ma wyższy priorytet w PATH niż /usr/bin, należy utworzyć następujący alias (wprowadź w swoim .bashrc lub .zshrc) jeżeli węzeł systemu alternatywnego ma być efektywny; w przeciwnym wypadku węzeł zainstalowany z n w /usr / local / bin ma zawsze pierwszeństwo:

alias node='/usr/bin/node'

Teraz możesz łatwo przełączać się między wersjami węzłów za pomocą n <desired node version number>.

 9
Author: Ville,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-02 04:11:16

Dla mnie problem został rozwiązany przez,

sudo apt-get remove node
sudo apt-get remove nodejs
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo ln -s /usr/bin/nodejs /usr/bin/node
alias node=nodejs
rm -r /usr/local/lib/python2.7/dist-packages/localstack/node_modules
npm install -g npm@latest || sudo npm install -g npm@latest
 9
Author: shrishinde,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-03 11:07:32

W Linuksie Mint 17 wypróbowałem oba rozwiązania (tworząc dowiązanie symboliczne lub używając pakietu nodejs-legacy) bez powodzenia.

Jedyną rzeczą, która w końcu zadziałała dla mnie, było użycie ppa od Chrisa Lea:

sudo apt-get purge node-*
sudo apt-get autoremove 
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

Ten zainstalowany węzeł w wersji 10.37 i npm 1.4.28. Po tym mogę zainstalować pakiety na całym świecie.

 8
Author: Suzana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-10 00:52:42

Jak już wspominają inni, sugeruję, aby nie używać "sudo apt-get" do instalacji węzła lub jakiejkolwiek biblioteki programistycznej. Wymaganą wersję można pobrać ze strony https://nodejs.org/dist/v6.9.2 / i skonfigurować własne środowisko.

Polecę narzędzia takie jak nvmi n, aby zarządzać twoją wersją węzła. Bardzo wygodne jest przełączanie i praca z tymi modułami. https://github.com/creationix/nvm https://github.com/tj/n

Lub napisać Bash Bash, aby pobrać zip / tar, wyodrębnić folder przenieś i utworzyć miękki link. Gdy chcesz zaktualizować, po prostu wskaż Stary miękki link do nowej pobranej wersji. Tak jak ja stworzyłem dla siebie, możesz odnieść się do: https://github.com/deepakshrma/NodeJs-4.0-Reference-Guide/blob/master/nodejs-installer.sh

#Go to home
cd ~
#run command
#New Script
wget https://raw.githubusercontent.com/deepakshrma/NodeJs-4.0-Reference-Guide/master/nodejs-installer.sh 
bash nodejs-installer.sh -v lts
#here -v or --version can be sepecific to 0.10.37 or it could be latest/lts 
#Examples
bash nodejs-installer.sh -v lts
bash nodejs-installer.sh -v latest
bash nodejs-installer.sh -v 4.4.2
 7
Author: xdeepakv,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-08 09:47:54

Proste rozwiązanie z Tutaj

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash --
sudo apt-get install nodejs

Możesz określić wersję zmieniając wartość setup_x. x, na przykład na setup_5.x

 4
Author: Krzysztof Karolak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-07 20:07:29

Odinstaluj dowolną wersję węzła

sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs-legacy
sudo apt-get --purge remove nodejs

Install nvm (Node Version Manager) https://github.com/creationix/nvm

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash

Teraz możesz zainstalować dowolną wersję węzła i przełączać się między wersjami.

 3
Author: davide andreazzini,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-21 14:09:26

Twój System nie jest w stanie wykryć węzła ścieżki js binary.

1.which node

2.Następnie soft link node do nodejs

ln -s [the path of nodejs] /usr/bin/node 

Zakładam, że /usr / bin jest w twojej ścieżce wykonania. Następnie możesz przetestować wpisując node lub npm w linii poleceń i wszystko powinno działać teraz.

 3
Author: frostcs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-01 13:36:36

Naprawiłem to odłączanie /usr / sbin / node (które jest połączone z pakietem ax25-node), następnie utworzyłem link do nodejs używając tego w wierszu poleceń

sudo ln -s /usr/bin/nodejs /usr/bin/node

Ponieważ pakiet taki jak karma nie działa z nazwą nodejs, jednak zmienia pierwszą linię skryptu karma z node na nodejs, ale wolę rozwiązać ten problem raz na zawsze

 2
Author: Juan Antonio Aguilar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-16 22:56:40

Dla mnie poprawką było usunięcie pakietów węzła*, a także pakietów npm.

Następnie nowa instalacja jako:

sudo apt-get install autoclean
sudo apt-get install nodejs-legacy
npm install
 1
Author: Jimmy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-01 02:45:41

Możesz utworzyć link ln -s nodejs węzeł w /usr/bin mam nadzieję, że to rozwiąże twój problem.

 0
Author: Nitish Agarwal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-07 18:31:04

Problem nie jest w instalatorze
zamień nodejs na node lub zmień ścieżkę z /usr/bin / NodeJS na/usr/bin / NODE

 0
Author: Vinayk93,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-26 19:41:26

To jest Twój węzeł nie jest poprawnie zainstalowany, najpierw musisz odinstalować węzeł, a następnie zainstalować go ponownie. Aby zainstalować węzeł może to pomóc http://array151.com/blog/nodejs-tutorial-and-set-up/

Po tym można łatwo zainstalować pakiety. Aby zainstalować pakiety, może Ci to pomóc

Http://array151.com/blog/npm-node-package-manager/

 0
Author: Dinesh Jain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-02 15:55:01