Perché l'installazione del nodo 6.x su Ubuntu 16.04 installa effettivamente il nodo 4.2.6?


78

Questi erano i miei passi per installare il nodo su 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

quali sono le istruzioni ufficiali:

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

Dopo aver fatto ciò, l'esecuzione nodejs --versionritorna v4.2.6.

Come ho usato setup_6.xsupponevo che 6sarebbe stata installata una versione che inizia con ?

Ho pensato che forse setup_6.xdovrebbe essere setup_6.2.1, ma quella pagina restituisce un 404, vedi:

https://deb.nodesource.com/setup_6.x (c'è una pagina lì)

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

Come installo l'ultima versione stabile del nodo su Ubuntu 16.04?

Modificare:

Questi sono i risultati dopo l'esecuzione 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

Modificare:

Risultati di 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

Includi una copia dell'output di apt-cache policy nodejsPlease nella tua domanda come modifica.
Thomas Ward

Il fatto che il sistema abbia inserito NodeJS 4.x significa che o hai eseguito gli script errati o che il repository non è stato aggiunto correttamente al sistema - utilizzando gli esatti passaggi descritti nella pagina a cui ti colleghi, sono stato in grado di ottenere l'ultimo installato così com'è, quindi potrebbero esserci un numero qualsiasi di problemi: se puoi fornire apt-cachedati in modo da poter vedere ciò che il tuo computer vede nei repository, potremmo essere in grado di aiutarti ulteriormente.
Thomas Ward

@ThomasW. - Aggiunti dati per pubblicare.
user1063287

1
Grazie per i dati aggiornati. Sembra che la sceneggiatura non abbia fatto ciò che doveva per qualsiasi motivo. Preciso che questo è il caso e il modo "manuale" di fare ciò che sta facendo lo script, nella mia risposta di seguito. Puoi usarlo per ottenere l'ultima versione da NodeJS. Non è bello e facile come una sceneggiatura, ma è davvero ciò che la sceneggiatura fa al suo interno.
Thomas Ward

1
@pipe Per fortuna ci sono persone come me che eseguono script in VM distruttibili in modo da poter vedere cosa sta facendo. È così che ho derivato le istruzioni nella mia risposta, in modo da poter fare manualmente quello 'script' eh.
Thomas Ward

Risposte:


136

Il motivo principale è che lo script di installazione non è stato eseguito correttamente. Pertanto, grazie ai dati aggiornati dell'OP che lo supporta, i dati dal repository NodeSource non sono mai stati visti aptperché non sono stati configurati correttamente dallo script.

Lo script, pertanto, potrebbe non aver trovato la tua distribuzione o potrebbe essere incasinato durante la configurazione del repository, oppure potrebbe essersi verificata un'interruzione della rete o una delle mille ragioni per cui è stata interrotta e non ha fatto il suo lavoro.

Il fatto che stai vedendo 4.xl'installazione della versione significa che lo script non ha fatto bene il suo lavoro, quindi lo script non è necessariamente in errore. Questo significa solo che dobbiamo potenzialmente farlo in un modo più difficile.

Dovrei sottolineare: lo script in realtà non esegue alcuna installazione - tutto ciò che serve è determinare la versione di Debian / Ubuntu in cui ti trovi e configurare il repository in modo che ottenga i dati da. La parte dell'installazione è in realtà il sudo apt-get installpassaggio eseguito manualmente.


Invece di fare affidamento sullo script, possiamo fare ciò che lo script sta facendo alla vecchia maniera: a mano, noi stessi, impostare la configurazione del repository e installare NodeJS.

Ecco il modo manuale per farlo funzionare, ed è fondamentalmente ciò che fa lo script (ad eccezione del passaggio 4, che è quello di assicurarsi di ottenere dati precisi sulla versione):

  1. Crea un nuovo file: /etc/apt/sources.list.d/nodesource.list

    Dovrai creare questo file con sudo, ma quando crei il file, inseriscilo al suo interno:

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

    Quindi, salva il file. (sostituire node_6.xcon node_7.xo node_8.x, ecc. per le versioni più recenti del nodo)

  2. Scarica la chiave di firma GPG da Nodesource per il repository . Altrimenti, potresti ricevere NO_PUBKEYerrori con apt-get update(utilizzare wgetin questo comando se curlnon è installato e se nessuno dei due è installato, installarne uno):

    curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
    
  3. Esegui manualmentesudo apt-get update .

    Questo aggiorna i dati dal repository delle risorse di nodo in modo da aptsapere che esiste una versione più recente.

    Se ricevi un NO_PUBKEYerrore GPG, torna al passaggio 2

  4. Controlla l' apt-cache policy nodejsoutput.

    Questo non è fatto dallo script, ma vuoi assicurarti di vedere una voce che dice qualcosa di simile nell'output (anche se la versione potrebbe essere diversa se non stai usando 6.x come stringa di versione; l'unica cosa che abbiamo attenzione è che c'è un numero di versione più recente fornito tramite nodesource):

    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
    

    Se non vedi voci come questa e vedi solo 4.2.6, ricomincia. Altrimenti, procedi.

  5. Installa il nodejsbinario. Ora che hai confermato che 6.x è disponibile sul tuo sistema, puoi installarlo:sudo apt-get install nodejs

  6. nodejs --versiondovrebbe ora essere visualizzato v6.2.1o simile sull'output (purché inizi con la v6.versione 6, quindi, potrebbe essere un numero di versione superiore se si utilizza una versione più recente di 6 ma purché non sia 4.2.6 dovrebbe essere buono per andare).


4
Seguito questo da una T e tutti i punti corrispondono al comportamento descritto. Grazie mille.
user1063287

1
@ user1063287 Prego! Spero che questo aiuti gli altri se la sceneggiatura non funziona neanche per loro! Divertiti con l'ultimo NodeJS!
Thomas Ward

Oh, in modo che 'per questo che io in realtà non ho Nodo 6 quando ho pensato che faccio, e programmi si lamentano Ho bisogno versione 6. Grazie!
gatto,

Grazie, ha funzionato alla grande, ho notato che nel mio /etc/apt/sources.list.d/nodesource.listc'era un commento sulla disabilitazione - aveva anche la vecchia versione 0.x e ero su 4.x con il nodo -v. Belle istruzioni chiare.
DaveStSomeWhere

1
Dato che l'arricciatura non è installata di default, un'alternativa è usare wgetwget -O - https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
gerardw

38

Avevo una versione precedente di nodo. Tutto quello che dovevo fare era eliminare quello vecchio:

sudo apt-get purge nodejs npm

E quindi, sostituendo 6 in v=6con 7, 8, 9 come necessario per le rispettive versioni (vedere le istruzioni di installazione ufficiali ):

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

(assicurati di aver installato il ricciolo.)

E infine

sudo apt-get install -y nodejs

Boom, ultima versione del nodo.


4
Oppure, https://deb.nodesource.com/setup_7.xper il nodo v7. Vedi la guida ufficiale
Ryene

2
Il mio installa ancora v4.2.6
Freek Nortier

1
@FreekNortier Ho riscontrato questo problema anche su Linux Mint 18. Sono stato in grado di installare la versione 11 dopo l'eliminazione e l'esecuzione sudo apt-get install python-software-properties. Ho trovato questo suggerimento su tecadmin e codebind .
Ben

4

Per l'utente della versione 16.04.2 di Ubuntu (con un po 'di cambiamento da Thomas'post e grazie per lui)

1.Aprire l'aggiornamento del software

2.Blocco impost

3. altro software

4. Aggiungi le fonti ma ricorda di scegliere tutte le nuove fonti in seguito exp:


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

5.reload

6.sudo apt-get update

7. apt-cache policy nodejs// per ottenere la nuova tabella delle versioni e verificare se l'origine è stata eseguita

8.sudo apt install nodejs

9.nodejs --version

ORA È tutto pronto .......

attenzione: non modificare il driver predefinito Linux per la scheda nvidia dal pannello di aggiornamento .... il sistema si arresterà in modo anomalo .... !!!


Installa v4.2.6.
Prashant Prabhakar Singh,

simpatico! ha funzionato per me
ejaenv il

3

Ho avuto lo stesso problema. Ma nel mio caso ho dovuto aggiornare il mio comando curl. È possibile visualizzare il problema eseguendo con l'opzione -S.

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

Che ha mostrato il problema

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

Quindi ho risolto questo problema eseguendo quanto segue.

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

risolto il problema
SadeepDarshana

1

Aggiungendo @Thomas Ward rispondi a coloro che stanno riscontrando problemi nell'installazione di nodejs 8.x con URL https o il codice continua a installare v4.2.6 mostrando l'errore del certificato prova ad aggiungere nodesource.list con le righe sottostanti

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

prossimo passo: corri

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

Poi

sudo apt-get install -y nodejs

Questo risolverà il tuo problema installando la versione aggiornata di nodejs e la versione npm come ha risolto il mio per Ubuntu 16.04 LTS ...


0

Ho trovato questo link e mi aiuta a installare Nodejs8____https: //www.ubuntuupdates.org/ppa/nodejs_7.x. Ho dovuto unirmi a Nojs8https in quella linea perché stava dicendo che dovevo essere di livello due per poter pubblicare più di due link. Penso che sia casuale ma qualunque cosa.

Prima di installarlo ho eseguito il comando: apt-get remove --purge version nodejs

Per verificare che non sia installata alcuna versione, eseguire: policyjs nella cache apt apt o o nodejs --version

Sono stato in grado di installare Node js 8 semplicemente cambiando il 7 in 8 e ho finito con la versione 8.1.3. Per fare ciò ho eseguito i comandi che si trovano in quella pagina che ho pubblicato sopra ma qui ci sono comunque i comandi:

Scarica la chiave del repository con:

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

Quindi impostare il repository ::

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

Ancora una volta, se vuoi il nodo js 8 puoi cambiare il numero 7 in quella riga di comando in 8 e voilà!


0

Ho provato a seguire le istruzioni su https://github.com/nodesource/distributions per la versione 8, ma non ha funzionato per me. Ho visitato https://deb.nodesource.com/setup_8.x direttamente nel browser e copiato e incollato lo script in un file sul mio sistema nodejs.sh . Quindi ho eseguito i seguenti comandi

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

Il comando apt-cache ha mostrato due versioni con una preferenza per l'installazione 8. In seguito è possibile eliminare il file di installazione. Non sono sicuro del perché la copia del file in locale sia stata utile perché il comando curl ha mostrato correttamente lo script.


0

Ehi ragazzi se avete Ubuntu 16 provate queste istruzioni. Ha funzionato perfettamente per me. Fornisci anche la password del tuo account ogni volta che ti viene chiesto in questo processo.

  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. politica apt-cache nodejs Controlla se le versioni elencate hanno il nodo 8

  5. sudo apt-get install nodejs

  6. nodejs -v controlla la versione del nodo installata

Questo installerà correttamente nodejs versione 8 sul tuo sistema. Se desideri qualsiasi altra versione, cambia la versione ai passaggi 1 e 2 che funzionerà correttamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.