525 Stimmen

Kann keine Pakete mit dem Node Package Manager in Ubuntu installieren

Der NodeJS-Interpreter-Name(node) auf Ubuntu wurde aufgrund eines Namenskonflikts mit einem anderen Paket in nodejs umbenannt. Hier ist, was in der Readme-Datei von Debian steht:

Der ursprüngliche Name für den Node.js-Interpreter-Befehl lautet "node". In Debian wurde der Interpreter-Befehl in "nodejs" geändert.

Dies wurde durchgeführt, um Kollisionen mit Namensräumen zu verhindern: Andere Befehle verwenden im Ursprung denselben Namen, wie z.B. ax25-node aus dem Paket "node".

Skripte, die Node.js als Shell-Befehl aufrufen, müssen stattdessen den Befehl "nodejs" verwenden.

Die Verwendung von nodejs führt jedoch dazu, dass bei der Installation von Paketen mit npm Fehler auftreten. Die Paketinstallation schlägt mit dem folgenden Fehler fehl:

sh: 1: node: not found
npm WARN Dieses Problem könnte auf die Verwendung des veralteten Binärformats "node" zurückzuführen sein
npm WARN Weitere Erklärungen finden Sie unter /usr/share/doc/nodejs/README.Debian

Wie kann ich npm dazu bringen zu verstehen, dass nodejs bereits auf dem System installiert ist, der Interpreter-Name jedoch anders ist?

12voto

shrishinde Punkte 3109

Für mich wurde das Problem gelöst durch:

sudo apt-get remove node
sudo apt-get remove nodejs
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo ln -s /usr/bin/nodejs /usr/bin/node
alias node=nodejs
rm -r /usr/local/lib/python2.7/dist-packages/localstack/node_modules
npm install -g npm@latest || sudo npm install -g npm@latest

10voto

Ville Punkte 3790

Hier ist ein weiterer Ansatz, den ich verwende, da ich n für einfaches Wechseln zwischen Node-Versionen mag.

Auf einem neuen Ubuntu-System installieren Sie zunächst den 'system' node:

curl -sL https://deb.nodesource.com/setup | sudo bash -

Dann installieren Sie das n-Modul global:

npm install -g n

Da zuerst der system node (oben) installiert wurde, können die Alternativen des Systems sauber auf den von n bereitgestellten node zeigen. Stellen Sie zunächst sicher, dass die Alternativen des Systems nichts für node enthalten:

update-alternatives --remove-all node

Fügen Sie dann den von n bereitgestellten node hinzu:

update-alternatives --install /usr/bin/node node /usr/local/bin/node 1

Fügen Sie nun den vom System bereitgestellten node hinzu (denjenigen, der mit curl installiert wurde):

update-alternatives --install /usr/bin/node node /usr/bin/nodejs 2

Wählen Sie nun den von n bereitgestellten node über das interaktive Menü aus (wählen Sie /usr/local/bin/node aus dem Menü, das vom folgenden Befehl angezeigt wird):

update-alternatives --config node

Schließlich, da /usr/local/bin normalerweise eine höhere Priorität in PATH hat als /usr/bin, muss das folgende Alias erstellt werden (geben Sie es in Ihre .bashrc oder .zshrc ein), wenn das Alternativsystem verwendet werden soll; sonst hat der mit n in /usr/local/bin installierte node immer Vorrang:

alias node='/usr/bin/node'

Jetzt können Sie ganz einfach zwischen Node-Versionen wechseln mit n .

9voto

xdeepakv Punkte 7409

Wie andere Leute bereits erwähnt haben, würde ich vorschlagen, "sudo apt-get" nicht zu verwenden, um node oder eine Entwicklungs-Bibliothek zu installieren. Sie können die erforderliche Version von https://nodejs.org/dist/v6.9.2/ herunterladen und Ihre eigene Umgebung einrichten.

Ich empfehle Tools wie nvm und n, um Ihre Node-Version zu verwalten. Es ist sehr praktisch, mit diesen Modulen zu wechseln und zu arbeiten. https://github.com/creationix/nvm https://github.com/tj/n

Oder schreiben Sie ein einfaches Bash-Skript, um Zip/Tar herunterzuladen, zu extrahieren, Ordner zu verschieben und einen symbolischen Link zu erstellen. Wenn Sie aktualisieren müssen, zeigen Sie einfach den alten symbolischen Link auf die neu heruntergeladene Version. Wie ich es für mich erstellt habe, können Sie sich beziehen: https://github.com/deepakshrma/NodeJs-4.0-Reference-Guide/blob/master/nodejs-installer.sh

#Gehe zum Startverzeichnis
cd ~
#Führe den Befehl aus
#Neues Skript
wget https://raw.githubusercontent.com/deepakshrma/NodeJs-4.0-Reference-Guide/master/nodejs-installer.sh 
bash nodejs-installer.sh -v lts
#hier kann -v oder --version spezifisch für 0.10.37 sein oder es könnte latest/lts sein 
#Beispiele
bash nodejs-installer.sh -v lts
bash nodejs-installer.sh -v latest
bash nodejs-installer.sh -v 4.4.2

9voto

Suzana Punkte 4131

Auf Linux Mint 17 habe ich beide Lösungen ausprobiert (das Erstellen eines symbolischen Links oder die Verwendung des nodejs-legacy Pakets) ohne Erfolg.

Das Einzige, was schließlich für mich funktioniert hat, war die Verwendung des ppa von Chris Lea:

sudo apt-get purge node-*
sudo apt-get autoremove 
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

Dies installierte Node-Version 10.37 und npm 1.4.28. Danach konnte ich Pakete global installieren.

7voto

Einfache Lösung von hier

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash --
sudo apt-get install nodejs

Sie können die Version angeben, indem Sie den Wert setup_x.x ändern, zum Beispiel zu setup_5.x

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X