
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 npm
Die 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-username
im obigen Befehl mit Ihrem eigenen Benutzernamen. Führen Sie dann einen Test aus, npm -v
um 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 yarn
und 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 nodejs
Paket enthält nodejs
sowohl die Binärdatei als auch npm
, sodass Sie es nicht npm
separat installieren müssen. Damit einige npm
Pakete jedoch funktionieren (z. B. solche, die aus dem Quellcode erstellt werden müssen), müssen Sie das build-essential
Paket 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 |