Node Package Manager wurde in irgendeiner Weise beschädigt, jetzt kann es nicht installiert werden

11

Ich bin heute auf ein Problem gestoßen, als ich mich dazu entschieden habe, npm update -g in einem Nodejs-App-Verzeichnis zu verwenden. Das war eine schlechte Entscheidung, weil es mich dazu brachte, ein häufiges und katastrophales Problem mit npm zu bekommen.

Die Lösung besteht darin, nodejs und npm neu zu installieren. Leider, wenn ich npm mit sudo apt-get install npm installieren, funktioniert es nicht.

Der vollständige Fehler im Terminal ist hier:

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.

Was kann ich tun, damit npm korrekt installiert und wieder ausgeführt wird?

Danke.

    
Zach Cook 21.05.2015, 07:57

1 Antwort

22

Aktualisieren

In Bezug auf den Kommentar von Full Decent unterhalb dieser Antwort gibt es eine bessere Möglichkeit, Node.js nativ in Ubuntu als Snap-Paket zu installieren.

Node.js ist als Snap-Paket in allen derzeit unterstützten Ubuntu-Versionen verfügbar. Speziell für Node.js können Entwickler aus einer der aktuell unterstützten Versionen auswählen und regelmäßige automatische Updates direkt von NodeSource erhalten. Die Node.js-Versionen 6, 8 und 9 sind derzeit verfügbar, wobei der Snap Store innerhalb von Stunden oder Minuten einer Node.js-Version aktualisiert wird.

Knoten kann mit einem einzigen Befehl installiert werden, zum Beispiel:

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

Auf den Knotenfang kann mit dem Befehl node zugegriffen werden, zum Beispiel:

$ node -v  
v9.9.0

Eine aktuelle Version von npm wird als Teil des Knotenfangs installiert. npm sollte außerhalb des Knotenrepls in Ihrer normalen Shell ausgeführt werden. Führen Sie nach der Installation des Knotenfaktors den folgenden Befehl aus, um npm update checking zu aktivieren:

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

Ersetzen Sie your-username im obigen Befehl durch Ihren eigenen Benutzernamen. Führen Sie dann npm -v aus, um zu prüfen, ob die Version von npm aktuell ist. Als Beispiel habe ich überprüft, dass npm aktuell ist, die Version eines bereits installierten Pakets namens Garn mit dem Befehl npm list yarn überprüft und dann das vorhandene Garnpaket mit dem Befehl npm update yarn

Benutzer können jederzeit zwischen Versionen von Node.js wechseln, ohne zusätzliche Tools wie nvm (Node Version Manager) in Anspruch nehmen zu müssen, zum Beispiel:

sudo snap refresh node --channel=8/stable

Benutzer können hochmoderne Versionen von Node.js testen, die vom neuesten Edge-Channel installiert werden können, der derzeit die Entwicklungsarbeit von Node.js Version 10 verfolgt, indem er mit:

wechselt
sudo snap switch node --edge

Dieser Ansatz wird nur für diejenigen Benutzer empfohlen, die bereit sind, an Tests teilzunehmen und Fehlerberichte zu veröffentlichen.

Ursprüngliche Antwort

Um die neuesten LTS-Versionen von Node.js (nodejs) und Paketmanager für Node.js (npm) in allen derzeit unterstützten Versionen von Ubuntu zu installieren, öffnen Sie das Terminal und führen Sie die folgenden Befehle aus:

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  

Wenn Sie diese drei Befehle kopieren, dürfen Sie den Bindestrich am Ende des zweiten Befehls nicht vernachlässigen.

Das nodejs -Paket enthält die nodejs -Binärdatei sowie npm , sodass Sie npm nicht separat installieren müssen. Damit einige npm -Pakete funktionieren (z. B. solche, die ein Erstellen aus der Quelle erfordern), müssen Sie das build-essential -Paket installieren:

sudo apt-get install build-essential  

LTS-Plan

Neue Semver-Major-Versionen von Node.js werden alle sechs Monate von master abgeschnitten. Neue geradzahlige Versionen (z. B. v6, v8, v10 usw.) werden im April geschnitten. Neue ungerade Versionen (z. B. v5, v7, v9) werden im Oktober geschnitten.

Wenn ein neues ungeradzahliges Haupt-Release gekürzt wird, geht die vorherige geradzahlige Hauptversion zum Langzeit-Support-Plan über.

Jede größere Version, die vom LTS-Plan abgedeckt wird, wird für einen Zeitraum von 18 Monaten ab dem Datum, an dem sie in den LTS-Tarif aufgenommen wird, aktiv gepflegt. Nach diesen 18 Monaten aktiver Unterstützung wechselt die Hauptversion für weitere 12 Monate in den "Wartungsmodus".

Nicht-LTS-Installation

Bis März 2017 sind die Befehle zum Installieren der neuesten Nicht-LTS-Version von Node.js (Version 8 zum Zeitpunkt der Veröffentlichung) wie folgt:

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-Zeitplan

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
    
karel 21.05.2015, 08:12

Tags und Links