Der Node Package Manager wurde auf irgendeine Weise beschädigt und kann nun nicht mehr installiert werden.

Der Node Package Manager wurde auf irgendeine Weise beschädigt und kann nun nicht mehr installiert werden.

Ich bin heute auf ein Problem gestoßen, als ich mich entschied, ein NodeJS-App-Verzeichnis zu verwenden npm update -g. Das war eine schlechte Entscheidung, denn dadurch stieß ich auf einhäufiges und katastrophales Problem mit npm.

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

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, um npm ordnungsgemäß zu installieren und wieder zum Laufen zu bringen?

Danke.

Antwort1

Aktualisieren

Bezüglich William Entrikens Kommentar unter dieser Antwort gibt es eine bessere Möglichkeit, Node.js nativ als Snap-Paket in Ubuntu zu installieren.

Node.js ist als Snap-Paket in allen derzeit unterstützten Versionen von Ubuntu verfügbar. Speziell für Node.js können Entwickler aus einer oder mehreren der derzeit unterstützten Versionen wählen und erhalten regelmäßige automatische Updates direkt von NodeSource. Derzeit sind die Node.js-Versionen 6, 8, 9, 10, 11, 13, 14, 15, 16, 17 und 18 verfügbar, wobei der Snap Store innerhalb von Stunden oder Minuten nach einer Node.js-Version aktualisiert wird.

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

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

Auf den Knoten-Snap kann mit dem Befehl zugegriffen werden node, zum Beispiel:

$Knoten -v  
Version 9.9.0

Eine aktuelle Version von npm wird als Teil des Node Snap installiert. npm sollte außerhalb des Node Repl in Ihrer normalen Shell ausgeführt werden. Führen Sie nach der Installation des Node Snap den folgenden Befehl aus, um die npm-Updateprüfung zu aktivieren:

sudo chown -R $USER:$(id -gn $USER) /home/dein Benutzername/.config

Ersetzen your-usernameim obigen Befehl mit Ihrem eigenen Benutzernamen. Führen Sie dann einen Test aus, npm -vum zu überprüfen, ob die Version von npm auf dem neuesten Stand ist. Als Beispiel habe ich überprüft, ob npm auf dem neuesten Stand ist, die Version eines bereits installierten Pakets namens yarn mit dem Befehl überprüft npm list yarnund dann das vorhandene yarn-Paket mit dem Befehl auf die neueste Version aktualisiertnpm update yarn

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

sudo snap refresh node --channel=8/stable

Benutzer können die neuesten Versionen von Node.js testen, die vom neuesten Edge-Kanal installiert werden können, indem sie zu Folgendem wechseln:

sudo snap switch node --edge

Dieser Ansatz wird nur den Benutzern empfohlen, die bereit sind, sich an Tests und der Fehlerberichterstattung im Upstream zu beteiligen.


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, vergessen Sie nicht den Bindestrich am Ende des zweiten Befehls.

Das nodejsPaket enthält nodejssowohl die Binärdatei als auch npm, sodass Sie es nicht npmseparat installieren müssen. Damit einige npmPakete jedoch funktionieren (z. B. solche, die aus dem Quellcode erstellt werden müssen), müssen Sie das build-essentialPaket installieren:

sudo apt-get install build-essential  

LTS-Plan

Alle sechs Monate werden neue Semver-Major-Releases von Node.js veröffentlicht master. Neue Versionen mit geraden Nummern (z. B. v6, v8, v10 usw.) werden im April veröffentlicht. Neue Versionen mit ungeraden Nummern (z. B. v5, v7, v9) werden im Oktober veröffentlicht.

Wenn eine neue Hauptversion mit ungerader Nummer herauskommt, wechselt die vorherige Hauptversion mit gerader Nummer zum Long Term Support-Plan.

Jede Hauptversion, die vom LTS-Plan abgedeckt wird, wird ab dem Datum, an dem sie in den LTS-Abdeckungsbereich aufgenommen wird, für einen Zeitraum von 18 Monaten aktiv gewartet. Nach diesen 18 Monaten aktiver Unterstützung wechselt die Hauptversion für weitere 12 Monate in den Wartungsmodus.

Nicht-LTS-Installation

Stand März 2017 lauten die Befehle zum Installieren der neuesten Nicht-LTS-Version von Node.js (v8 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

Freigeben Status Code Name Erstveröffentlichung LTS-Start Wartungsbeginn Wartungsende
6.x Ende der Betriebszeit Bor 26.04.2016 18.10.2016 30.04.2018 30.04.2019
7.x Ende der Betriebszeit 30.05.2017 30.06.2017
8.x Ende der Betriebszeit Kohlenstoff 25.10.2016 31.10.2017 01.01.2019 31.12.2019
9.x Ende der Betriebszeit 01.10.2017 30.06.2018
10.x Ende der Betriebszeit Dubnium 24.04.2018 30.10.2018 19.05.2020 30.04.2021
11.x Ende der Betriebszeit 23.10.2018 01.06.2019
12.x Wartung LTS Erbium 23.04.2019 21.10.2019 2020-11-301 30.04.2022
13.x Ende der Betriebszeit 22.10.2019 01.06.2020
14.x Wartung LTS Fermium 21.04.2020 27.10.2020 30.10.2021 30.04.2023
16.x Aktives LTS Gallium 20.04.2021 26.10.2021 18.10.2022 30.04.2024
17.x Aktuell 19.10.2021 01.04.2022 01.06.2022
18.x Aktuell 19.04.2022 25.10.2022 18.10.2023 30.04.2025

verwandte Informationen