Node Package Manager è stato danneggiato in qualche modo, ora non può essere installato


13

Ho npm update -griscontrato un problema oggi quando ho deciso di utilizzare in una directory dell'app nodejs. Questa è stata una decisione sbagliata, perché mi ha fatto incontrare un problema comune e disastroso con npm .

La soluzione è reinstallare nodejs e npm. Sfortunatamente quando vado a installare npm usando sudo apt-get install npmnon funziona.

L'errore completo nel terminale è qui:

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.

Cosa posso fare per ottenere npm correttamente installato e funzionante di nuovo?

Grazie.

Risposte:


29

Aggiornare

Per quanto riguarda il commento di William Entriken sotto questa risposta, esiste un modo migliore di installare nativamente Node.js in Ubuntu come pacchetto snap.

Node.js è disponibile come pacchetto snap in tutte le versioni attualmente supportate di Ubuntu. Specifico per Node.js, gli sviluppatori possono scegliere tra una o più delle versioni attualmente supportate e ottenere regolari aggiornamenti automatici direttamente da NodeSource. Le versioni 6, 8, 9, 10, 11, 12 e 13 di Node.js sono attualmente disponibili, con lo Snap Store che viene aggiornato entro poche ore o minuti da una versione di Node.js.

Il nodo può essere installato con un singolo comando, ad esempio:

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

Lo snap al nodo è accessibile dal comando node, ad esempio:

$ node -v  
v9.9.0

Una versione aggiornata di npm verrà installata come parte dello snap al nodo. npm dovrebbe essere eseguito al di fuori del nodo repl, nella shell normale. Dopo aver installato lo snap al nodo, eseguire il comando seguente per abilitare il controllo degli aggiornamenti di npm:

sudo chown -R $ USER: $ (id -gn $ USER) / home / tuo-nome utente /.config

Sostituisci your-usernamenel comando sopra con il tuo nome utente. Quindi eseguire npm -vper verificare se la versione di npm è aggiornata. Ad esempio, ho verificato che npm fosse aggiornato, ho controllato la versione di un pacchetto già installato chiamato filato con il comando npm list yarne quindi ho aggiornato il pacchetto di filato esistente all'ultima versione con il comandonpm update yarn

Gli utenti possono passare da una versione all'altra di Node.js in qualsiasi momento senza la necessità di coinvolgere strumenti aggiuntivi come nvm (Node Version Manager), ad esempio:

sudo snap refresh node --channel=8/stable

Gli utenti possono testare le versioni bleeding-edge di Node.js che possono essere installate dall'ultimo canale edge che attualmente sta monitorando Node.js versione 12 passando con:

sudo snap switch node --edge

Questo approccio è consigliato solo per quegli utenti che sono disposti a partecipare a test e segnalazione di bug a monte.


Risposta originale

Per installare le ultime versioni LTS di Node.js (nodejs) e Gestione pacchetti per Node.js (npm) in tutte le versioni attualmente supportate di Ubuntu, aprire il terminale ed eseguire i comandi seguenti:

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  

Se stai copiando questi tre comandi, non trascurare il trattino alla fine del secondo comando.

Il nodejspacchetto contiene anche il file nodejsbinario npm, quindi non è necessario installarlo npmseparatamente. Tuttavia, affinché alcuni npmpacchetti funzionino (come quelli che richiedono la compilazione dal sorgente), sarà necessario installare il build-essentialpacchetto:

sudo apt-get install build-essential  

Piano LTS

Le nuove versioni semestrali di Node.js vengono tagliate masterogni sei mesi. Le nuove versioni pari (es. V6, v8, v10, ecc.) Verranno tagliate ad aprile. Le nuove versioni dispari (es. V5, v7, v9) verranno tagliate ad ottobre.

Quando viene tagliata una nuova versione principale con numero dispari, la precedente versione principale con numero pari passa al piano di supporto a lungo termine.

Ogni versione principale coperta dal piano LTS sarà mantenuta attivamente per un periodo di 18 mesi dalla data in cui entra in copertura LTS. Dopo quei 18 mesi di supporto attivo, la versione principale passerà in modalità "manutenzione" per altri 12 mesi.

installazione non LTS

Attuali a marzo 2017 i comandi per installare l'ultima versione non LTS di Node.js (v8 al momento della pubblicazione) sono i seguenti:

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

Rilascio Stato LTS Nome codice LTS Avvia manutenzione Avvia manutenzione Fine
6.x Boro attivo 2016-10-18 aprile 2018 aprile 2019
7.x No LTS              
8.x Active Carbon 2017-10-31 aprile 2019 dicembre 2019
9.x No LTS              
10.x Dubnium attivo ottobre 2018 aprile 2020 aprile 2021  
11.x No LTS 2019-04-01 2019-06-30
12.x 2019-10-22 2021-04-01 2022-04-01
13.x No LTS 2020-04-20 2020-06-01


usando "sudo apt-get install -y nodejs" ha funzionato per me
Davinder Kumar il

Questo metodo richiede la fiducia di MOLTE parti e quindi il pieno accesso al tuo computer a deb.nodesource.com, un'entità che non può nemmeno preoccuparsi di aggiornare il proprio sito Web ogni versione per includere l'hash del contenuto per la tua sicurezza. No grazie!
William Entriken,

@WilliamEntriken Node.js è ora un pacchetto snap in Ubuntu che non richiede l'esecuzione del curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -comando. Invece Node.js può essere installato come pacchetto snap. Ho aggiunto una nuova sezione di aggiornamento alla mia risposta che contiene le istruzioni per l'installazione del pacchetto di snap Node.js.
Karel,
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.