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
JonRed
quelle
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
Lassen Sie uns diese Diskussion im Chat fortsetzen .
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
Helio
quelle
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
23

Ich habe eine Lösung gefunden, die für mich funktioniert hat:

sudo -E env "PATH=$PATH" n stable

Hier gefunden: /programming//a/29400598/861615

Glückspilz
quelle
env: n: Keine solche Datei oder Verzeichnis
user3311522
1
@ user3311522 hast du benutzt: sudo npm install n -gvorher sudo -E env "PATH=$PATH" n stable??
Luckylooke
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
vornehmste
quelle
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 .

Gus
quelle
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

Jacek Góraj
quelle
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
Satyam Chinna
quelle
-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

Dingyanhe
quelle