Ich habe gerade Ubuntu 12.04 LTS neu installiert und vor allem habe ich folgende Schritte ausgeführt :
Installierter Knoten über den Paketmanager mit dem folgenden Skript
sudo apt-get update sudo apt-get install python-software-properties python g++ make sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get update sudo apt-get install nodejs
Es wurde versucht, die Generatoren von yeoman, express, n, yeoman global zu installieren, und alle haben den gleichen Fehler zurückgegeben
npm ERR! Fehler: EACCES, Symlink '../lib/node_modules/n/bin/n'
npm ERR! {[Fehler: EACCES, Symlink '../lib/node_modules/n/bin/n'] Fehler: 3, Code: 'EACCES', Pfad: '../lib/node_modules/n/bin/n'}
npm ERR!
npm ERR! Bitte versuchen Sie erneut, diesen Befehl als root / Administrator auszuführen.
npm ERR! System Linux 3.8.0-29-generic
npm ERR! Befehl "/ usr / bin / node" "/ usr / bin / npm" "install" "-g" "-d" "n"
npm ERR! cwd / home / heberlz
npm ERR! Knoten -v v0.10.20
npm ERR! npm -v 1.3.11
npm ERR! Pfad ../lib/node_modules/n/bin/n
npm ERR! Code EACCES
npm ERR! errno 3
npm ERR! Stapelfehler: EACCES, Symlink '../lib/node_modules/n/bin/n'
npm ERR!
npm ERR! Weitere Protokollierungsdetails finden Sie in:
npm ERR! /home/heberlz/npm-debug.log
npm ERR! nicht ok Code 0
Zurückgewonnener Besitz der folgenden Ordner rekursiv ~ / .npm, / usr / lib / node, / usr / lib / node_modules und der folgenden Symlinks / usr / bin / node, / usr / bin / nodejs ohne Erfolg
Ich muss yeoman und seine Generatoren ohne sudo installieren, um später keine Probleme zu haben :(
ln -s /usr/bin/nodejs /usr/bin/node
Antworten:
Ubuntu 12.04 und die Verwendung von Chris Leas PPA zur Installation der folgenden Funktionen funktionieren für mich:
und Hinzufügen von $ HOME / .npm-packages / bin zu $ PATH
Anhängen
.bashrc
Siehe https://stackoverflow.com/a/18277225 von @passy
quelle
/usr/lib/node_modules/
. Oder vielleicht sogar geeignet, eine Nodejs-Unix-Gruppe zu erstellen und dieser Gruppe die Berechtigung zum Schreiben in dieses Verzeichnis zu erteilen.Wenn Sie bereits
$HOME/bin
auf Ihrem Weg sind, ist eine einfachere Lösung nur ...$HOME/bin
Verzeichnis installiert .Da geht es bei dieser Diskussion wirklich darum, die Sicherheitsrisiken beim Laufen zu reduzieren
sudo
, sollten Sie sich auch darüber im Klaren sein, dass jede Knoten-App möglicherweise einen App-Namen installiert, der nicht mit dem Namen des registrierten Knotenpakets übereinstimmt, von dem Sie glauben, dass Sie ihn installieren. Es besteht also das Sicherheitsrisiko, dass einnpm install
vorhandener oder bereits vorhandener Systembefehl ersetzt wird$HOME/bin
. Wenn Sie betroffen sind, überprüfen Sie diebin
undscripts
Eigenschaften in derpackage.json
Datei der App, die Sie zuerst installieren.Im Allgemeinen ist es am sichersten:
$HOME/bin
letzten Platz in Ihrem Pfad, damit Systembefehle nicht ersetzt werden.$PATH
damit Sie nicht versehentlich einen Befehl ausführen, der sich zufällig im aktuellen Verzeichnis befindet.Referenz:
quelle
npm
besteht darin, dass der Quellcode, den Sie auf einemgithub.com
Repo für ein Knotenpaket sehen, möglicherweise nicht mit dem Code übereinstimmt, den Sie vomnpm.org
Registrierungsserver installieren !~/bin
, wurden einige Knotenpakete (oder deren abhängige Pakete) nur als Installation getestet. Beachten Siesudo
daher, dass möglicherweise ein ungetestetes Problem mit der "Installationsumgebung" auftritt. Wie bei jedem anderen Umgebungsproblem (wie dem Wechsel des Betriebssystems) gilt das Prinzip "einmal schreiben, überall testen" immer noch.Stand Oktober 2014:
Node.js ist im Repository für Binärdistributionen von NodeSource Debian und Ubuntu verfügbar .
Das ist es.
Veraltete Antwort:
Der schnellste Weg ohne sudo ist wie hier von isaac beschrieben
BEARBEITEN:
Es gibt bestimmte Sicherheitsbedenken und Funktionseinschränkungen hinsichtlich der Änderung des Eigentums von / usr / local auf den aktuellen Benutzer:
Wenn Sie jedoch ein globales Modul ohne Verwendung von sudo installieren möchten, sehe ich keine bessere Lösung (aus pragmatischer Sicht) als erwähnt. Sicherheit versus Benutzerfreundlichkeit ist ein sehr weit gefasstes Thema, und darauf gibt es keine einfache Antwort - es hängt nur von Ihren Anforderungen ab.
quelle
/usr/local/lib/node_modules
undnode
Das Problem war, dass ich den Knoten mit sudo installiert habe , um Fehler bei der globalen Installation von npm-Modulen zu vermeiden. Ein Knoten darf NIEMALS mit sudo installiert werden.
Meine Lösung bestand darin, den Knoten neu zu installieren :
Laden Sie die neuesten stabilen Knotenquellen von nodejs.org # in meinem Fall node-v0.10.20.tar.gz herunter
Zu beachten ist, dass in meinem Fall nur die Übernahme des Ordners / usr / local nicht funktioniert, da die Knoteninstallation selbst mit sudo durchgeführt wurde
Letzter Schritt, um yeoman zu installieren: # Obwohl auf yeoman.io steht, dass bei "npm install -g yo" bereits Laube und Grunzen installiert sind, gibt es einige Submodule von Grunzen, die fehlschlagen. Deshalb habe ich das behoben, indem ich es selbst installiert habe
quelle
Ich habe dieses Problem mit Umgebungsvariablen und Shell-Alias gelöst:
Für mich hat npm die Konfigurationseinstellung "Präfix" in .npmrc nicht berücksichtigt.
quelle
Nach diesem ähnlichen SO-Beitrag: npm wirft Fehler ohne Sudo
Sieht so aus, als hätten Sie möglicherweise ein Besitzproblem mit dem
~/.npm
Verzeichnis.Versuchen Sie wie bei der Antwort in diesem:
quelle
Suchen Sie den Pfad zum Verzeichnis von npm:
Für viele Systeme ist dies / usr / local.
Ändern Sie den Eigentümer der Verzeichnisse von npm in den Namen des aktuellen Benutzers (Ihren Benutzernamen!):
Dadurch werden die Berechtigungen der von npm und einigen anderen Tools (lib / node_modules, bin und share) verwendeten Unterordner geändert.
Hier ist der Link für alle Details
https://docs.npmjs.com/getting-started/fixing-npm-permissions
quelle
bin
undshare
in Klammern. Das Ignorieren kann dazu führen, dass der Besitz dieser Ordner auf den aktuellen Benutzersudo
geändert wird und Probleme bei der Installation neuer Pakete auf dem System auftreten, da auch der Besitz geändert wirdWenn Sie sich auf einer Entwicklungsmaschine befinden, ist es möglicherweise besser, nvm zu verwenden .
Wenn nicht, möchten Sie einfach mit Ihrem bevorzugten Paketmanager installieren.
Was auch immer der Fall sein mag, ich würde empfehlen , diese Antwort beim Stackoverflow zu überprüfen
quelle
Eigentlich habe ich gerade die Berechtigung eines Benutzerordners geändert, der root gehört:
Dann könnte ich "npm install" und "bower install" ohne sudo! Hat gut funktioniert!
quelle
Mit lubuntu 14.04.3 habe ich versucht, den Besitz des Präfixes .npm und npm zu ändern, meinen Pfad aktualisiert, npm Module ohne sudo in mein Home-Verzeichnis installiert, aber der Pfad war falsch, sodass Module wie ember nicht gefunden wurden. linuxbew hat das Problem schnell gelöst Setup-Anleitung hier für Node / Npm
quelle
Dieses und andere Probleme, die aus demselben Grund verursacht wurden, können behoben werden, indem Node im Benutzerbereich installiert wird.
Sie können dies einfach durch Kopieren und Einfügen in Ihr Terminal tun
Dieselben Befehle können auch gestartet werden, um Node auf die neueste Version zu aktualisieren.
Vergessen Sie nicht, Ihre Umgebung zu bearbeiten. Nur einmal
In diesem Artikel erfahren Sie, wie Sie Node.js ohne sudo installieren .
Eine allgemeinere Lösung zu diesem Thema (dh Software lokal installieren) finden Sie unter Dotsoftware .
quelle
Verwenden Sie einfach nvm. Sie können dynamisch zwischen verschiedenen Knotenversionen wechseln und es wird lokal für Ihren Benutzer installiert. Kein Sudo nötig. Stellen Sie einfach sicher, dass Sie den alten Knoten zuvor vollständig bereinigt haben.
https://github.com/nvm-sh/nvm
quelle
Die beste Lösung, die ich gefunden habe, war, Node.js vom tar-Paket in das Home-Verzeichnis des Benutzers zu installieren und den Speicherort des lib-Ordners zu verknüpfen. Hier ist was Sie tun müssen
Dadurch werden Nodejs unter ~ / .local / anstelle des Standardwerts / usr / local / installiert.
Wenn bei der Installation von Paketen immer noch ein Besitz- oder Berechtigungsfehler auftritt, ändern Sie den Besitz von ~ / .local / dir durch Ausführen
Jetzt sollten Sie gut darin sein, Pakete über 'npm' zu installieren.
Hinweis: ALLE OBEN GENANNTEN BEFEHLE SIND ALS BENUTZER AUSZUFÜHREN. VERWENDEN SIE KEIN SUDO- ODER ROOT-LOGIN
NIEMALS DIE ERLAUBNIS VON ORDNERN UNTER '/ USR / LIB /' ÄNDERN. FÜHRT ZU UNSTABILEM Betriebssystem
quelle
Ich finde die Erklärungen von Pawel Grzybek sehr überzeugend: Sie beschränken sich auf drei einfache sudo-Befehle und müssen sudo nie wieder für globale npm-Installationen verwenden:
quelle