web-dev-qa-db-fra.com

Node Le gestionnaire de paquets a été corrompu d'une manière ou d'une autre, il ne peut plus être installé

J'ai rencontré un problème aujourd'hui lorsque j'ai décidé d'utiliser npm update -g dans un répertoire app nodejs. Ce fut une mauvaise décision, car cela me causa un problème commun et désastreux avec npm .

La solution consiste à réinstaller nodejs et npm. Malheureusement, lorsque je vais installer npm avec Sudo apt-get install npm, cela ne fonctionne pas.

L'erreur complète dans le terminal est ici:

Some packages could not be installed. This may mean that you have requested
an impossible situation or if you are using the unstable distribution that 
some required packages have not yet been created or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
 npm : Depends: nodejs but it is not going to be installed
   Depends: node-abbrev (>= 1.0.4) but it is not going to be installed
   Depends: node-ansi but it is not going to be installed
   Depends: node-archy but it is not going to be installed
   Depends: node-block-stream but it is not going to be installed
   Depends: node-fstream (>= 0.1.22) but it is not going to be installed
   Depends: node-fstream-ignore but it is not going to be installed
   Depends: node-github-url-from-git but it is not going to be installed
   Depends: node-glob (>= 3.1.21) but it is not going to be installed
   Depends: node-graceful-fs (>= 2.0.0) but it is not going to be installed
   Depends: node-inherits but it is not going to be installed
   Depends: node-ini (>= 1.1.0) but it is not going to be installed
   Depends: node-lockfile but it is not going to be installed
   Depends: node-lru-cache (>= 2.3.0) but it is not going to be installed
   Depends: node-minimatch (>= 0.2.11) but it is not going to be installed
   Depends: node-mkdirp (>= 0.3.3) but it is not going to be installed
   Depends: node-gyp (>= 0.10.9) but it is not going to be installed
   Depends: node-nopt (>= 2.1.1) but it is not going to be installed
   Depends: node-npmlog but it is not going to be installed
   Depends: node-once but it is not going to be installed
   Depends: node-osenv but it is not going to be installed
   Depends: node-read but it is not going to be installed
   Depends: node-read-package-json (>= 1.1.0) but it is not going to be installed
   Depends: node-request (>= 2.25.0) but it is not going to be installed
   Depends: node-retry but it is not going to be installed
   Depends: node-rimraf (>= 2.2.2) but it is not going to be installed
   Depends: node-semver (>= 2.1.0) but it is not going to be installed
   Depends: node-sha but it is not going to be installed
   Depends: node-slide but it is not going to be installed
   Depends: node-tar (>= 0.1.18) but it is not going to be installed
   Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Que puis-je faire pour que NPM soit correctement installé et fonctionne à nouveau?

Merci.

13
Zach Cook

Mettre à jour

En ce qui concerne le commentaire de William Entriken au-dessous de cette réponse, il existe un meilleur moyen d'installer Node.js de manière native dans Ubuntu en tant que paquet instantané.

Node.js est disponible sous la forme d'un package logiciel enfichable dans toutes les versions actuellement prises en charge d'Ubuntu. Spécifiques à Node.js, les développeurs peuvent choisir parmi une ou plusieurs des versions actuellement prises en charge et obtenir des mises à jour automatiques régulières directement à partir de NodeSource. Les versions 6, 8, 9, 10, 11, 12 et 13 de Node.js sont actuellement disponibles, le Snap Store étant mis à jour quelques heures ou minutes après la publication d'une version de Node.js.

Le nœud peut être installé avec une seule commande, par exemple:

Sudo snap install node --classic --channel 9/stable 

La commande nodepermet d’accéder au composant logiciel enfichable. Par exemple:

$ noeud -v 
 v9.9.0

Une version à jour de npm sera installée dans le cadre de la capture de noeud. npm doit être exécuté en dehors du noeud repl, dans votre shell normal. Après avoir installé le composant logiciel enfichable de noeud, exécutez la commande suivante pour activer la vérification de la mise à jour de npm:

Sudo chown -R $ USER: $ (id -gn $ USER)/home /ton nom d'utilisateur/.config

Remplacer your-username dans la commande ci-dessus avec votre propre nom d'utilisateur. Exécutez ensuite npm -v pour vérifier si la version de npm est à jour. A titre d'exemple, j'ai vérifié que npm était à jour, vérifié la version d'un paquet déjà installé nommé yarn à l'aide de la commande npm list yarn, puis mis à jour le package de fil existant à la dernière version à l'aide de la commande npm update yarn

Les utilisateurs peuvent passer d’une version à l’autre de Node.js à tout moment sans avoir recours à des outils supplémentaires tels que nvm (Node Version Manager), par exemple:

Sudo snap refresh node --channel=8/stable

Les utilisateurs peuvent tester les versions Edge de Node.js qui peuvent être installées à partir du dernier canal Edge qui suit actuellement la version 12 de Node.js en basculant avec:

Sudo snap switch node --Edge

Cette approche n'est recommandée que pour les utilisateurs souhaitant participer aux tests et aux rapports de bogues en amont.


Réponse originale

Pour installer les dernières versions LTS de Node.js (nodejs) et du gestionnaire de packages pour Node.js (npm) dans toutes les versions actuellement prises en charge d'Ubuntu, ouvrez le terminal et exécutez les commandes suivantes:

Sudo apt-get remove nodejs npm ## remove existing nodejs and npm packages
Sudo apt-get install curl  
curl -sL https://deb.nodesource.com/setup_6.x | Sudo -E bash -
Sudo apt-get install -y nodejs  

Si vous copiez ces trois commandes, ne négligez pas le trait d'union à la fin de la deuxième commande.

Le package nodejscontient le binaire nodejsainsi que npmname__; vous n'avez donc pas besoin d'installer npmname___ séparément. Toutefois, pour que certains packages npmfonctionnent (tels que ceux nécessitant une construction à partir du source), vous devez installer le package build-essential:

Sudo apt-get install build-essential  

Plan LTS

Les nouvelles versions semver-major de Node.js sont coupées de mastertous les six mois. Les nouvelles versions paires (par exemple, v6, v8, v10, etc.) sont coupées en avril. Les nouvelles versions impaires (par exemple, v5, v7, v9) sont supprimées en octobre.

Lorsqu'une nouvelle version majeure impaire est coupée, la version majeure précédente paire passe au plan de support à long terme.

Chaque version majeure couverte par le plan LTS sera activement maintenue pendant une période de 18 mois à compter de la date à laquelle elle entre en couverture. Après ces 18 mois de support actif, la version majeure passera en mode "maintenance" pendant 12 mois supplémentaires.

installation non-LTS

En date de mars 2017, les commandes permettant d'installer la dernière version de Node.js non LTS (v8 au moment de la publication) sont les suivantes:

Sudo apt-get remove nodejs npm ## remove existing nodejs and npm packages
Sudo apt-get install curl  
curl -sL https://deb.nodesource.com/setup_8.x | Sudo -E bash -
Sudo apt-get install -y nodejs  

Node.js LTS Schedule

Libérer le statut LTS Nom de code LTS Démarrer Maintenance Démarrer Maintenance Fin
 6.x Active Boron 2016-10-18 Avril 2018 Avril 2019 
 7.x Non LTS 
 8.x Active Carbon 2017-10-31 Avril 2019 Décembre 2019 
 9.x Non LTS 
 10.x Actif Dubnium Octobre 2018 Avril 2020 Avril 2021 
 11.x Non LTS 2019-04-01 2019-06-30 
 12 .x 2019-10-22 2021-04-01 2022-04-01 
 13.x Non LTS 2020-04-20 2020-06-01
29
karel