Befehl beim Ausführen von node.js n-Paket auf sudo nicht gefunden

Befehl beim Ausführen von node.js n-Paket auf sudo nicht gefunden

Ich versuche, meine Node-Version auf die neueste stabile Version zu aktualisieren.

Verwenden vondiese RessourceIch war in der Lage:

sudo npm install n -g

Aber wenn ich versuche

sudo npm n stable

Ich bekomme:

sudo: n: command not found

Wenn ich ausführe n stable, wird der Befehl angezeigt:

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

Antwort1

Ich habe eine Lösung gefunden, die bei mir funktioniert hat:

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

Habe es hier gefunden:https://stackoverflow.com/a/29400598/861615

Antwort2

Überraschenderweise npmverfügt Ihre Installation über das globale Präfix in einem Ordner namens „Global“ npmin Ihrem Home-Verzeichnis. Dies bedeutet, dass jedes mit diesem -gFlag installierte Paket in diesem Ordner installiert wird.

sudoMit den folgenden Schritten können Sie diesen Ordner in jeden beliebigen Ordner auf dem sicheren Pfad ändern :


Grafischer Weg:

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

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

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

Terminalweg:

Führen Sie diesen Befehl aus:

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

Antwort3

Ich weiß, dass dies ein Ubuntu-Forum ist, aber ich bin sicher, dass dies jemandem mit demselben Problem mit den RHEL-Varianten helfen wird, der wie ich hierher gegoogelt hat. Vielleicht funktioniert es auch unter Ubuntu.

Das ist der Ansatz:

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

Antwort4

Um zu vermeiden, dass der .npm-globalOrdner durcheinander gerät,bemerktvon @Edson Horacio Junior und basierend auf @pohest'sAntwort, so habe ich das Problem behoben:

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

Als Hinweis: Dies wird wahrscheinlich nicht funktionieren, wenn Sie die Schritte von npm nicht befolgt haben fürÄndern des globalen Standardverzeichnisses.

verwandte Informationen