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

11

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

La soluzione è reinstallare nodejs e npm. Sfortunatamente quando vado ad installare npm usando sudo apt-get install npm non 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.

Che cosa posso fare per ottenere correttamente l'installazione e il funzionamento di npm?

Grazie.

    
posta Zach Cook 21.05.2015 - 07:57

1 risposta

22

Aggiornamento

Per quanto riguarda il commento di Full Decent sotto questa risposta, c'è un modo migliore di installare Node.js in modo nativo 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 delle versioni attualmente supportate e ottenere aggiornamenti automatici regolari direttamente da NodeSource. Le versioni Node.js 6, 8 e 9 sono attualmente disponibili, con lo Snap Store aggiornato in poche ore o minuti di una versione di Node.js.

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

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

È possibile accedere allo snap ai nodi con il comando node , ad esempio:

$ node -v  
v9.9.0

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

sudo chown -R $USER:$(id -gn $USER) /home/your-username/.config

Sostituisci your-username nel comando precedente con il tuo nome utente. Quindi esegui npm -v per verificare se la versione di npm è aggiornata. Come esempio ho verificato che npm era aggiornato, ho controllato la versione di un pacchetto già installato chiamato filato con il comando npm list yarn e poi ho aggiornato il pacchetto di filati esistente alla versione più recente con il comando npm update yarn

Gli utenti possono passare da una versione 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 versioni all'avanguardia di Node.js che possono essere installate dall'ultimo canale edge che sta attualmente monitorando lo sviluppo della versione 10 di Node.js passando a:

sudo snap switch node --edge

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

Risposta originale

Per installare le ultime versioni LTS di Node.js (nodejs) e Package manager per Node.js (npm) in tutte le versioni attualmente supportate di Ubuntu, apri il terminale ed esegui i seguenti comandi:

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 pacchetto nodejs contiene il nodejs binario e npm , quindi non è necessario installare npm separatamente. Tuttavia, affinché alcuni pacchetti di npm funzionino (come quelli che richiedono la compilazione da sorgente), dovrai installare il pacchetto build-essential :

sudo apt-get install build-essential  

Piano LTS

Le nuove versioni principali di Semex di Node.js vengono ridotte da master ogni sei mesi. Nuove versioni con numero pari (ad esempio v6, v8, v10, ecc.) Vengono ridotte in aprile. Nuove versioni dispari (ad esempio v5, v7, v9) vengono tagliate in ottobre.

Quando viene tagliata una nuova versione principale dispari, le precedenti versioni con numero pari passano al piano di supporto a lungo termine.

Tutte le principali versioni coperte dal piano LTS verranno mantenute attivamente per un periodo di 18 mesi dalla data in cui entra nella copertura LTS. Dopo questi 18 mesi di supporto attivo, la versione principale passerà alla modalità "manutenzione" per 12 mesi aggiuntivi.

installazione non LTS

Corrente fino a marzo 2017 i comandi per installare l'ultima versione non LTS di Node.js (v8 al momento in cui è stato pubblicato) 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

Release LTS Status  Codename    LTS Start       Maintenance Start Maintenance End
6.x     Active      Boron       2016-10-18      April 2018        April 2019
7.x     No LTS              
8.x     Active      Carbon      2017-10-31      April 2019        December 2019
9.x     No LTS              
10.x    Active      Dubnium     October 2018    April 2020        April 2021  
11.x    No LTS                                                    June 2019
    
risposta data karel 21.05.2015 - 08:12

Leggi altre domande sui tag