Befehl nicht gefunden, wenn das Paket node.js n auf sudo ausgeführt wird


13

Ich versuche, meine Version von node auf den neuesten Stand zu bringen.

Mit dieser Ressource konnte ich:

sudo npm install n -g

Aber wenn ich es versuche

sudo npm n stable

Ich bekomme:

sudo: n: command not found

Wenn ich laufe n stable, ist der Befehl vorhanden:

n stable
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied

     install : node-v0.12.2
       mkdir : /usr/local/n/versions/node/0.12.2
mkdir: cannot create directory ‘/usr/local/n’: Permission denied

  Error: sudo required

Gute Idee, aber wenn ich das tue, wird der Befehl 'n: nicht gefunden' zurückgegeben, obwohl ich das 'sudo' fallengelassen habe
JonRed

sudo sh -c "PATH = $ PATH; n stabile" <neue Zeile> sh: 1: n: nicht gefunden
JonRed

Überhaupt keine Ausgabe. Das ist deprimierend :-(
JonRed


Bitte posten Sie die Ausgabe vonls /usr/local/bin/n
Helio

Antworten:


5

Überraschenderweise hat Ihre npmInstallation das globale Präfix in einem Ordner, der npmin Ihrem Ausgangsverzeichnis aufgerufen wird. Dies bedeutet, dass jedes mit dem -gFlag installierte Paket in diesem Ordner installiert wird.

Sie können diesen Ordner in einen beliebigen Ordner ändern, der sich im sudosicheren Pfad befindet. Führen Sie dazu die folgenden Schritte aus:


Grafische Art:

  1. Öffnen Sie einen Dateimanager (auch bekannt als Nautilus).
  2. Navigieren Sie zu Ihrem Basisordner.
  3. Drücken Sie Ctrl+ H, um versteckte Dateien anzuzeigen.
  4. Öffnen Sie eine Datei .npmrcmit Ihrem bevorzugten Texteditor.
  5. Suchen Sie in dieser Datei eine Zeile mit folgendem Inhalt:

    prefix=/home/<your_username>/npm
    
  6. Ersetzen Sie /home/<your_username>/npmdurch einen sicheren Pfad (z. B. /usr/local/bin).
  7. Nach dem Ersetzen sieht es so aus:

    prefix=/usr/local/bin
    
  8. Speicher die Datei.
  9. Führe es nochmals aus sudo npm install n -g

Terminal Weg:

Führen Sie diesen Befehl aus:

sed -i.bak "s%^prefix=.*$%prefix=/usr/local/bin%" ~/.npmrc

Ich denke, das hat es geschafft! Es hat mir auch gerade geholfen, als ich meine npm-Version aktualisiert habe, aber ich würde es nicht erkennen. Also, akzeptiert und danke!
JonRed

Hat nicht geholfen, immer noch das gleiche Problem: /
Luckylooke

Das hat mir geholfen! Ich hatte keine ~ / .npmrc-Datei, also habe ich sie hinzugefügt und jetzt funktioniert sie
einwandfrei

2
Achtung: Dadurch wird Option 2 der Korrektur von NPM-Berechtigungen
Edson Horacio Junior


2

Ich weiß, dass dies ein Ubuntu-Forum ist, aber ich bin sicher, dass dies jemandem helfen wird, der das gleiche Problem mit den RHEL-Aromen hat wie ich. Vielleicht funktioniert es auch in Ubuntu.

Dies ist der Ansatz :

ln -s /usr/local/bin/n /usr/bin/n

0

Um zu vermeiden, dass der von @Edson Horacio Junior notierte.npm-global Ordner durcheinander gebracht wird, und basierend auf der Antwort von @ pohest , habe ich Folgendes behoben:

sudo ln -s /home/<username>/.npm-global/bin/n /usr/local/bin/n
sudo n --version # test it

Hinweis: Dies funktioniert wahrscheinlich nicht, wenn Sie die Schritte von npm zum Ändern des globalen Standardverzeichnisses nicht befolgt haben .


0

Ich habe eine Lösung gefunden, die für mich funktioniert. Verwenden Sie das nvmPaket, um den neuesten Knoten herunterzuladen.

  1. Installieren Sie nvm mit dem folgenden Befehl

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

  1. Erstellen Sie eine Umgebungsvariable für die Verwendung von nvm
export NVM_DIR="${XDG_CONFIG_HOME/:-$HOME/.}nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
  1. Versuchen Sie, nvm -vwenn es nicht nvminstalliert sehen kann, führen Sie das folgende Skript aus

command -v nvm

  1. Führen Sie den folgenden Befehl aus, um den Knoten zu installieren

nvm install node

  1. Versuchen Sie nach dem Neustart des Terminals, die Version des Knotens zu überprüfen. Sie sollte aktualisiert werden

node -v

Weitere Informationen hier: https://github.com/nvm-sh/nvm


0

Dies bedeutet, dass Sie nicht N in Ihrem System installiert haben. N ist ein npm-basierter Knotenversionsmanager. Sie können es installieren, indem Sie zuerst eine Version des Knotens installieren und dann ausführen

sudo npm install -g n

Jetzt können Sie die Version mit dem Befehl n auf dem Knoten installieren

sudo n stable

Mit dem obigen Befehl wird die neueste stabile Version installiert

sudo n lates

Dadurch wird die aktuelle Version installiert

Sie können die spezifische Version auch installieren, indem Sie die unten angegebene Version angeben

sudo n  10.16.0

-1

Ich bin auf dasselbe Problem gestoßen. So können Sie es lösen:

  1. Holen Sie sich das Präfix npm config
    npm config get prefix 
    // get -> ${myhome}/.npm-global
  2. Fügen Sie die folgenden Zeilen ein .zshrc

    # Specify `n` to put the version of `node` in the `.n` directory.
    export N_PREFIX=${myhome}/.npm-global/.n
    
    # Make `nman` command work
    export PATH=${myhome}/.npm-global/bin:$PATH
    
    # Add this line to use `node -v` command
    export PATH=${myhome}/.npm-global/.n/bin:$PATH

Referenz: GitHub - tj / n: Knotenversionsverwaltung

Anmerkung des Herausgebers: Diese Antwort wurde ursprünglich in Chinesisch verfasst und mit Online-Tools übersetzt und bearbeitet. Die ursprüngliche Antwort finden Sie in Revision 1

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.