83 votes

Pourquoi l'installation de node 6.x sur Ubuntu 16.04 installe-t-elle en réalité node 4.2.6 ?

Voici mes étapes pour installer node sur 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

qui sont les instructions officielles:

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

Après avoir fait cela, en exécutant nodejs --version retourne v4.2.6.

Comme j'ai utilisé setup_6.x, je pensais qu'une version commençant par 6 serait installée?

Je pensais peut-être que setup_6.x devrait être setup_6.2.1, mais cette page retourne une erreur 404, voir:

https://deb.nodesource.com/setup_6.x (il y a une page là-bas)

https://deb.nodesource.com/setup_6.2.1 (retourne une erreur 404)

Comment installer la dernière version stable de node sur Ubuntu 16.04?

Éditez:

Voici les résultats après avoir exécuté sudo apt-get install -y nodejs:

sudo apt-get install -y nodejs 
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires :
  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
Utilisez « sudo apt autoremove » pour les supprimer.
Les NOUVEAUX paquets suivants seront installés :
  nodejs
0 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 0 o/3 162 ko d'archives.
Après cette opération, 13,2 Mo d'espace disque supplémentaires seront utilisés.
Sélection du paquet nodejs précédemment désélectionné.
(Lecture de la base de données ... 329473 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../nodejs_4.2.6~dfsg-1ubuntu4_amd64.deb ...
Dépaquetage de nodejs (4.2.6~dfsg-1ubuntu4) ...
Traitement des actions différées (« triggers ») pour doc-base (0.10.7) ...
Traitement de 1 fichier doc-base ajouté...
Registration des documents avec scrollkeeper...
Traitement des actions différées (« triggers ») pour man-db (2.7.5-1) ...
Préparation du dépaquetage de .../nodejs_4.2.6~dfsg-1ubuntu4_amd64.deb ...
update-alternatives: utilisation de /usr/bin/nodejs pour fournir /usr/bin/js (js) en mode automatique

Éditez:

Résultats de apt-cache policy nodejs:

apt-cache policy nodejs
nodejs:
  Installé : 4.2.6~dfsg-1ubuntu4
  Candidat : 4.2.6~dfsg-1ubuntu4
  Table de version :
 *** 4.2.6~dfsg-1ubuntu4 500
        500 http://au.archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
        100 /var/lib/dpkg/status

143voto

Joe the Person Points 5090

La raison principale est que le script de configuration n'a pas été exécuté correctement. Par conséquent, grâce aux données mises à jour de l'OP qui le confirment, les données du référentiel NodeSource n'ont jamais été vues par apt car elles n'ont pas été correctement configurées par le script.

Le script n'a donc peut-être pas trouvé votre distribution, ou il a pu commettre des erreurs lors de la configuration du référentiel, ou il a pu y avoir une interruption du réseau, ou l'une des mille raisons pour lesquelles il a été perturbé et n'a pas fait son travail.

Le fait que vous voyiez la version 4.x s'installer signifie que le script n'a pas fait correctement son travail, donc le script n'est pas nécessairement en faute. Cela signifie simplement que nous devons potentiellement faire les choses d'une manière plus difficile.

Je tiens à préciser : le script n'effectue en réalité aucune installation - tout ce qu'il fait, c'est déterminer la version de Debian/Ubuntu sur laquelle vous vous trouvez, et configurer le référentiel pour qu'il puisse obtenir des données. L'étape d'installation est en réalité la commande sudo apt-get install que vous avez exécutée manuellement.


À noter également : cela supprimera le npm package mais c'est parce que nodejs avec cet emballage en amont inclura npm avec lui - pas besoin du package npm.


Au lieu de s'appuyer sur le script, nous pouvons faire ce que le script fait à l'ancienne : manuellement, nous-mêmes, configurer la configuration du référentiel et installer NodeJS.

Voici la manière manuelle de faire fonctionner cela, et c'est essentiellement ce que le script fait (à l'exception de l'Étape 4, qui consiste à s'assurer que vous obtenez des données de version précises) :

  1. Créez un nouveau fichier : /etc/apt/sources.list.d/nodesource.list

    Vous devrez créer ce fichier avec sudo, mais lorsque vous le créez, mettez ceci à l'intérieur :

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

    Ensuite, enregistrez le fichier. (remplacez node_6.x par node_7.x ou node_8.x, etc. pour les nouvelles versions de Node)

  2. Téléchargez la clé de signature GPG de Nodesource pour le référentiel. Sinon, vous risquez d'obtenir des erreurs NO_PUBKEY avec apt-get update (utilisez wget dans cette commande si curl n'est pas installé, et si aucun des deux n'est installé, installez l'un d'eux) :

    curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
  3. Exécutez manuellement sudo apt-get update.

    Cela actualise les données du référentiel nodesource afin que apt sache qu'une version plus récente existe.

    Si vous obtenez une erreur GPG NO_PUBKEY, revenez à l'Étape 2

  4. Vérifiez la sortie de apt-cache policy nodejs.

    Ceci n'est pas fait par le script, mais vous voulez vous assurer de voir une entrée qui indique quelque chose comme ceci dans la sortie (bien que la version puisse être différente si vous n'utilisez pas 6.x comme chaîne de version ; la seule chose qui nous intéresse est qu'il y a un numéro de version plus récent fourni via nodesource) :

    Table des versions :
        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

    Si vous ne voyez pas d'entrées comme celle-ci, et que vous ne voyez que 4.2.6, recommencez. Sinon, continuez.

  5. Installez le binaire nodejs. Maintenant que vous avez confirmé que la version 6.x est disponible sur votre système, vous pouvez l'installer : sudo apt-get install nodejs

  6. nodejs --version devrait maintenant afficher v6.2.1 ou similaire en sortie (tant que cela commence par v6. vous êtes sur la version 6 ; il peut s'agir d'un numéro de version plus élevé si vous utilisez une version plus récente que 6 mais tant que ce n'est pas 4.2.6 vous devriez être prêt à partir).

39voto

codemode Points 499

J'avais une ancienne version de node. Tout ce que j'avais à faire était de purger l'ancienne :

sudo apt-get purge nodejs npm

Et ensuite, en remplaçant 6 par 7, 8, 9 dans v=6 selon les versions respectives nécessaires (voir les instructions d'installation officielles) :

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

(assurez-vous d'avoir curl installé.)

Et enfin,

sudo apt-get install -y nodejs

Boom, dernière version de node.

4voto

Jason Liu Points 41

Pour l'utilisateur de la version Ubuntu 16.04.2 (avec un petit changement par rapport au message de Thomas et merci à lui)

1. Ouvrez le gestionnaire de mises à jour logicielles

2. Paramètres

3. Autres logiciels

4. Ajoutez les sources mais n'oubliez pas de choisir l'option toutes les nouvelles sources plus tard exp:


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

5. Rechargez

6. sudo apt-get update

7. apt-cache policy nodejs // pour obtenir le tableau des nouvelles versions et vérifier si la configuration de la source est bien faite

8. sudo apt install nodejs

9. nodejs --version

MAINTENANT tout est configuré......

attention : ne changez pas le pilote par défaut de votre carte nvidia Linux depuis le panneau de mise à jour....le système plantera....!!!

3voto

zatopek Points 131

J'ai eu le même problème. Mais dans mon cas, j'ai dû mettre à jour ma commande curl. Vous pouvez voir le problème en exécutant avec l'option -S.

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

Ce qui a montré le problème

curl: (1) Protocole "https" non pris en charge ou désactivé dans libcurl
gpg: aucune donnée OpenPGP valide trouvée.

J'ai donc résolu ce problème en exécutant ce qui suit.

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

1voto

sunilsmith Points 11

En ajoutant la réponse de @Thomas Ward, ceux qui rencontrent des problèmes pour installer nodejs 8.x avec une URL https ou dont le code installe toujours la version 4.2.6 en affichant une erreur de certificat peuvent essayer d'ajouter nodesource.list avec les lignes suivantes

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

Étape suivante : Exécutez

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

Ensuite

sudo apt-get install -y nodejs

Cela résoudra votre problème en installant une version mise à jour de nodejs et de npm, comme cela a résolu le mien pour Ubuntu 16.04 LTS...

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X