Dlaczego instalacja węzła 6.x na Ubuntu 16.04 faktycznie instaluje węzeł 4.2.6?

78

Oto moje kroki, aby zainstalować węzeł na Ubuntu 16.04:

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

które są oficjalnymi instrukcjami:

https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distribution

Po wykonaniu tej czynności bieganie nodejs --versionpowraca v4.2.6.

Kiedy używałem setup_6.x, zakładałem, że wersja zaczynająca się od 6zostanie zainstalowana?

Myślałam, że może setup_6.xpowinno być setup_6.2.1, ale że strona zwraca 404, zobacz:

https://deb.nodesource.com/setup_6.x (tam jest strona)

https://deb.nodesource.com/setup_6.2.1 (zwraca 404)

Jak zainstalować najnowszą stabilną wersję węzła na Ubuntu 16.04?

Edytować:

Oto wyniki po uruchomieniu sudo apt-get install -y nodejs:

sudo apt-get install -y nodejs 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  gyp libboost-python1.58.0 libjs-inherits libjs-node-uuid libjs-underscore
  libssl-dev libssl-doc libuv1-dev linux-headers-4.4.0-18
  linux-headers-4.4.0-18-generic linux-headers-4.4.0-21
  linux-headers-4.4.0-21-generic linux-image-4.4.0-18-generic
  linux-image-4.4.0-21-generic linux-image-extra-4.4.0-18-generic
  linux-image-extra-4.4.0-21-generic linux-signed-image-4.4.0-18-generic
  linux-signed-image-4.4.0-21-generic python-configobj python-pycurl
  python-pyexiv2 python-pyexiv2-doc
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
  nodejs
0 to upgrade, 1 to newly install, 0 to remove and 0 not to upgrade.
Need to get 0 B/3,162 kB of archives.
After this operation, 13.2 MB of additional disk space will be used.
Selecting previously unselected package nodejs.
(Reading database ... 329473 files and directories currently installed.)
Preparing to unpack .../nodejs_4.2.6~dfsg-1ubuntu4_amd64.deb ...
Unpacking nodejs (4.2.6~dfsg-1ubuntu4) ...
Processing triggers for doc-base (0.10.7) ...
Processing 1 added doc-base file...
Registering documents with scrollkeeper...
Processing triggers for man-db (2.7.5-1) ...
Setting up nodejs (4.2.6~dfsg-1ubuntu4) ...
update-alternatives: using /usr/bin/nodejs to provide /usr/bin/js (js) in auto mode

Edytować:

Wyniki apt-cache policy nodejs:

apt-cache policy nodejs
nodejs:
  Installed: 4.2.6~dfsg-1ubuntu4
  Candidate: 4.2.6~dfsg-1ubuntu4
  Version table:
 *** 4.2.6~dfsg-1ubuntu4 500
        500 http://au.archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
        100 /var/lib/dpkg/status
użytkownik1063287
źródło
Dołącz kopię wyniku apt-cache policy nodejsprosze do swojego pytania jako edycję.
Thomas Ward
Fakt, że system ściągnął NodeJS 4.x oznacza, że ​​albo uruchomiłeś niepoprawne skrypty, albo repozytorium nie zostało poprawnie dodane do systemu - wykonując dokładne kroki opisane na stronie, do której linkujesz, mogłem pobrać najnowszą wersję tak jak jest, więc może wystąpić dowolna liczba problemów - jeśli możesz podać apt-cachedane, abyśmy mogli zobaczyć, co widzi Twój komputer w repozytoriach, możemy pomóc.
Thomas Ward
@ThomasW. - Dodano dane do opublikowania.
user1063287,
1
Dzięki za zaktualizowane dane. Wygląda na to, że skrypt nie zrobił tego, co powinien z jakiegokolwiek powodu. W mojej odpowiedzi poniżej szczegółowo opisuję, że tak jest i „ręczny” sposób robienia tego, co robi skrypt. Możesz go użyć, aby pobrać najnowszą wersję z NodeJS. To nie jest tak przyjemne i łatwe jak skrypt, ale tak naprawdę to, co skrypt robi w swoim rdzeniu.
Thomas Ward
1
@pipe Na szczęście są tacy ludzie jak ja, którzy uruchamiają skrypty na zniszczalnych maszynach wirtualnych, abyśmy mogli zobaczyć, co robi. W ten sposób wyprowadziłem instrukcje z mojej odpowiedzi, abyśmy mogli zrobić to, co ten skrypt wykonuje ręcznie, heh.
Thomas Ward

Odpowiedzi:

136

Głównym powodem jest to, że skrypt instalacyjny nie działał poprawnie. Dlatego dzięki zaktualizowanym danym z OP, które to obsługuje, dane z repozytorium NodeSource nigdy nie były widoczne, aptponieważ nie zostały poprawnie skonfigurowane przez skrypt.

Skrypt zatem mógł nie znaleźć twojej dystrybucji lub mógł popsuć się podczas konfigurowania repozytorium, albo mogła wystąpić przerwa w sieci lub jeden z tysięcy powodów, dla których został zakłócony i nie wykonał swojej pracy.

Fakt, że wersja 4.xjest instalowana oznacza, że ​​skrypt nie wykonał poprawnie swojej pracy, więc skrypt niekoniecznie jest winny. Oznacza to po prostu, że musimy to zrobić trudniej.

Powinienem zwrócić uwagę: skrypt w rzeczywistości nie wykonuje żadnej instalacji - wystarczy określić wersję Debiana / Ubuntu, na której jesteś, i skonfigurować repozytorium, aby pobierało dane. Część instalacyjna to tak naprawdę sudo apt-get installkrok wykonywany ręcznie.


Zamiast polegać na skrypcie, możemy robić to, co robi skrypt w oldschoolowy sposób: ręcznie sami konfigurujemy repozytorium i instalujemy NodeJS.

Oto ręczny sposób sprawienia, aby działał i jest to w zasadzie to, co robi skrypt (z wyjątkiem kroku 4, który ma na celu upewnienie się, że otrzymujesz dokładne dane wersji):

  1. Utwórz nowy plik: /etc/apt/sources.list.d/nodesource.list

    Musisz utworzyć ten plik sudo, ale kiedy tworzysz plik, umieść go w nim:

    deb https://deb.nodesource.com/node_6.x xenial main
    deb-src https://deb.nodesource.com/node_6.x xenial main
    

    Następnie zapisz plik. (zamiast node_6.xze node_7.xlub node_8.xitd nowsze wersje Node)

  2. Pobierz klucz podpisu GPG z Nodesource dla repozytorium . W przeciwnym razie mogą pojawić się NO_PUBKEYbłędy związane z apt-get update(użyj wgettego polecenia, jeśli curlnie jest zainstalowane, a jeśli żadne nie jest zainstalowane, zainstaluj jeden z nich):

    curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
    
  3. Uruchom ręczniesudo apt-get update .

    Odświeża to dane z repozytorium węzłów, dzięki czemu aptwie, że istnieje nowsza wersja.

    Jeśli pojawi się NO_PUBKEYbłąd GPG, wróć do kroku 2

  4. Sprawdź apt-cache policy nodejswyjście.

    Skrypt nie robi tego, ale chcesz się upewnić, że widzisz w wynikach wpis, który mówi coś takiego (chociaż wersja może być inna, jeśli nie używasz 6.x jako łańcucha wersji; jedyne, co możemy zrobić ważne jest, aby za pośrednictwem węzła udostępniono nowszy numer wersji):

    Version table:
        6.2.1-1nodesource1~xenial1 500
           500 https://deb.nodesource.com/node_6.x xenial/main amd64 Packages
        4.2.6~dfsg-1ubuntu4 500
           500 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
    

    Jeśli nie widzisz takich wpisów, a tylko 4.2.6, zacznij od nowa. W przeciwnym razie kontynuuj.

  5. Zainstaluj nodejsplik binarny. Po potwierdzeniu, że wersja 6.x jest dostępna w systemie, możesz ją zainstalować:sudo apt-get install nodejs

  6. nodejs --versionpowinien być teraz wyświetlany v6.2.1lub podobny na wyjściu (o ile zaczyna v6.się od wersji 6, może to być wyższy numer wersji, jeśli używasz nowszej wersji niż 6, ale o ile nie jest to wersja 4.2.6 powinien być dobry).

Thomas Ward
źródło
4
Nastąpiło to do T i wszystkie punkty pasowały do ​​opisanego zachowania. Dziękuję Ci bardzo.
user1063287,
1
@ user1063287 Nie ma za co! Mam nadzieję, że to pomaga innym, jeśli skrypt nie działa również dla nich! Korzystaj z najnowszej wersji NodeJS!
Thomas Ward
Och, tak , że dlatego, że w rzeczywistości nie ma węzeł 6 kiedy myślałem zrobić, a programy skarżą muszę wersji 6. Dzięki!
kot
Dzięki, działało świetnie, zauważyłem, że w moim /etc/apt/sources.list.d/nodesource.listkomentarzu było to, że zostało wyłączone - miałem też starą wersję 0.x i byłem w 4.x z węzłem -v. Ładne jasne instrukcje.
DaveStSomeWhere
1
Ponieważ curl nie jest instalowany domyślnie, alternatywą jest użycie wgetwget -O - https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
gerardw
38

Miałem starszą wersję węzła. Wszystko, co musiałem zrobić, to oczyścić stary:

sudo apt-get purge nodejs npm

Następnie zamieniamy 6 na v=67, 8, 9 w zależności od potrzeb dla odpowiednich wersji (patrz oficjalna instrukcja instalacji ):

v=6
curl -sL https://deb.nodesource.com/setup_$v.x | sudo -E bash -

(upewnij się, że masz zainstalowane curl).

I na koniec

sudo apt-get install -y nodejs

Boom, najnowsza wersja węzła.

tryb kodowy
źródło
4
Lub https://deb.nodesource.com/setup_7.xdla węzła v7. Zobacz oficjalny przewodnik
ryenus
2
Mój nadal instaluje v4.2.6
Freek Nortier
1
@ FreekNortier Miałem również ten problem w Linux Mint 18. Po wyczyszczeniu i uruchomieniu mogłem zainstalować wersję 11 sudo apt-get install python-software-properties. Znalazłem tę sugestię na tecadmin i powiązaniu kodu .
Ben
4

Dla użytkownika wersji Ubuntu 16.04.2 (z niewielką zmianą w stosunku do Thomas'post i dziękuję za niego)

1. otwórz aktualizator oprogramowania

2. ustawienie

3. inne oprogramowanie

4.Dodaj źródła, ale pamiętaj, aby wybrać wszystkie nowe źródła później:


deb https://deb.nodesource.com/node_6.x xenial main
deb-src https://deb.nodesource.com/node_6.x xenial main

5. przeładuj

6.sudo apt-get update

7. apt-cache policy nodejs// aby uzyskać nową tabelę wersji i sprawdzić, czy konfiguracja źródła jest zakończona

8sudo apt install nodejs

9nodejs --version

TERAZ Wszystko gotowe .......

ostrzeżenie: nie zmieniaj domyślnego sterownika Linuksa dla karty nvidia z panelu aktualizacji .... system się zawiesi .... !!!

Jason Liu
źródło
Instaluje wersję 4.2.6.
Prashant Prabhakar Singh
miły! pracował dla mnie
ejaenv
3

Miałem ten sam problem. Ale w moim przypadku musiałem zaktualizować polecenie curl. Możesz zobaczyć problem, uruchamiając z opcją -S.

curl -s -S https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -

Który pokazał problem

curl: (1) Protocol "https" not supported or disabled in libcurl
gpg: no valid OpenPGP data found.

Naprawiłem więc ten problem, uruchamiając następujące.

sudo apt-get install curl
sudo apt autoremove
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
zatopek
źródło
rozwiązał problem
SadeepDarshana
1

Dodając @Thomas Ward odpowiedz tym, którzy mają problem z instalacją nodejs 8.x za pomocą adresu URL https lub kod nadal instaluje v4.2.6, pokazując błąd certyfikatu, spróbuj dodać nodesource.list z poniższymi wierszami

deb http://deb.nodesource.com/node_8.x xenial main
deb-src http://deb.nodesource.com/node_8.x xenial main

następny krok: Uruchom

sudo curl -sL http://deb.nodesource.com/setup_8.x | sudo -E bash -

Następnie

sudo apt-get install -y nodejs

To rozwiąże twój problem, instalując zaktualizowaną wersję nodejs i wersję npm, ponieważ rozwiązało to moje dla Ubuntu 16.04 LTS ...

sunilsmith
źródło
0

Znalazłem ten link i pomógł mi zainstalować Nodejs8____https: //www.ubuntuupdates.org/ppa/nodejs_7.x. Musiałem dołączyć do Nojs8https w tej linii, ponieważ mówiono, że muszę być na drugim poziomie, aby móc opublikować więcej niż dwa linki. Myślę, że to przypadek, ale cokolwiek.

Przed instalacją uruchomiłem polecenie: apt-get remove --purge version nodejs

Aby sprawdzić, czy nie masz zainstalowanej żadnej wersji, uruchom: apt-cached policy nodejs i lub nodejs --version

Byłem w stanie zainstalować Node js 8, po prostu zmieniając 7 na 8 i skończyłem z wersją 8.1.3. Aby to zrobić, uruchomiłem polecenia znajdujące się na tej stronie, którą zamieściłem powyżej, ale oto i tak polecenia:

Pobierz klucz repozytorium za pomocą:

curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -

Następnie skonfiguruj repozytorium:

sudo sh -c "echo deb https://deb.nodesource.com/node_7.x zesty main \ > /etc/apt/sources.list.d/nodesource.list"

sudo apt-get update

sudo apt-get install nodejs

Ponownie, jeśli chcesz węzeł js 8, możesz zmienić liczbę 7 w tym wierszu poleceń na 8 i voila!

Victor Espinoza
źródło
0

Próbowałem postępować zgodnie z instrukcjami na https://github.com/nodesource/distribution dla wersji 8, ale to nie działało dla mnie. Odwiedziłem https://deb.nodesource.com/setup_8.x bezpośrednio w przeglądarce oraz skopiowałem i wkleiłem skrypt do pliku w moim systemie nodejs.sh . Następnie wykonałem następujące polecenia

sudo -E bash nodejs.sh
apt-cache policy nodejs
sudo apt-get install nodejs

Polecenie apt-cache pokazało dwie wersje z preferencją instalacji 8. Następnie możesz usunąć plik instalacyjny. Nie jestem pewien, dlaczego lokalne kopiowanie pliku pomogło, ponieważ polecenie curl prawidłowo pokazało skrypt.

Bryan Toth
źródło
0

Cześć wszystkim, jeśli macie Ubuntu 16, wypróbujcie te instrukcje. Działa to dla mnie idealnie. Podaj także hasło do konta, gdy zostaniesz o to poproszony w tym procesie.

  1. sudo su -c „echo” deb https://deb.nodesource.com/node_8.x xenial main '>> /etc/apt/sources.list.d/nodesource.list ”

  2. sudo su -c „echo” deb-src https://deb.nodesource.com/node_8.x xenial main '>> /etc/apt/sources.list.d/nodesource.list ”

  3. sudo apt-get update

  4. apt-cache policy nodejs Sprawdź, czy wymienione wersje mają węzeł 8

  5. sudo apt-get install nodejs

  6. nodejs -v sprawdź zainstalowaną wersję węzła

To z powodzeniem zainstaluje nodejs wersja 8 w twoim systemie. Jeśli chcesz mieć inną wersję, zmień wersję w kroku 1 i 2, to zadziała.

błyskawica łukowa
źródło