npm install -g bricht mit 'EACCES: permission denied' ab? Nicht sudo verwenden. So installierst du globale Pakete korrekt über nvm oder ein eigenes Prefix.
Aufwand:
ca. 10 Min.
Voraussetzung:
sudo-Rechte, Terminal
Das Symptom
Du willst schnell ein globales Tool installieren, tippst npm install -g – und
npm bricht mit einem roten npm ERR! code EACCES ab, gefolgt von
„permission denied“ und einem Pfad wie /usr/lib/node_modules. Der Reflex
liegt nahe: einfach sudo davorsetzen. Und schon beginnt der Ärger.
Die „Layer 8“-Wahrheit
EACCES ist keine Schikane, sondern das Betriebssystem, das seinen Job macht.
Globale npm-Pakete wollen standardmäßig in ein Systemverzeichnis schreiben, das
nur Root gehört – und dein normaler Benutzer darf das zu Recht nicht. Der
scheinbar naheliegende Ausweg sudo ist genau der falsche: Er lässt fremden
Paket-Code als Root laufen und verstreut Dateien mit Root-Rechten, die dein
späteres npm dann selbst nicht mehr anfassen kann – ein Teufelskreis aus immer
mehr sudo. Die richtige Lösung dreht das Problem um: Node so einrichten, dass
globale Pakete im eigenen Home-Verzeichnis landen. Dann verschwindet EACCES
nicht durch mehr Rechte, sondern weil gar keine erhöhten Rechte mehr nötig sind.
Die echte, verifizierte Lösung
1000 % faktenbasiert. Jeder Befehl ist real, jeder Pfad existiert. Schritt für Schritt:
1.
Nicht mit sudo weitermachen
Der erste Schritt ist ein Verzicht: 'sudo npm install -g' vermeiden. Es übertüncht das Problem und hinterlässt oft Dateien, die deinem Benutzer nicht mehr gehören und späteres npm zusätzlich stören.
2.
Node über einen Versionsmanager installieren
Der sauberste Weg: nvm installiert Node komplett in dein Home-Verzeichnis. Globale Pakete landen dann automatisch dort, wo du schreiben darfst – ganz ohne Root:
Ohne nvm lässt sich das Zielverzeichnis für globale Pakete auf einen Ordner im Home umbiegen und in den PATH aufnehmen:
npm config set prefix ~/.npm-global
export PATH=~/.npm-global/bin:$PATH
4.
Kaputte Rechte aus früherem sudo reparieren
Wurde schon einmal mit sudo installiert, gehören Teile des npm-Caches jetzt Root. Die Eigentümerschaft zurück auf deinen Benutzer holen, damit npm wieder ohne Fehler arbeitet:
sudo chown -R $(whoami) ~/.npm
5.
Installation ohne sudo gegenprüfen
Zum Schluss testen, dass ein globales Paket jetzt ohne Root durchläuft. Klappt es, ist die Umgebung dauerhaft in Ordnung:
npm install -g <paket>
Häufige Fragen (FAQ)
?Warum EACCES bei npm install -g?
Globale Pakete landen standardmäßig in einem systemweiten Ordner wie /usr/lib/node_modules, in den dein normaler Benutzer nicht schreiben darf. npm meldet deshalb EACCES – fehlende Berechtigung. Das ist kein Bug, sondern der Schutz des Systemverzeichnisses vor Schreibzugriffen ohne Adminrechte.
?Ist sudo npm install -g nicht die einfachste Lösung?
Es ist die verlockendste und zugleich schlechteste. sudo lässt npm als Root schreiben und Skripte ausführen, kann Dateirechte durcheinanderbringen und ist ein Sicherheitsrisiko. Besser ist, Node so einzurichten, dass globale Pakete im eigenen Benutzerordner liegen – dann braucht es nie wieder Root.
Belege
Diese Seite ist gegen die folgenden Primärquellen geprüft – Hersteller, Standard oder Gesetzestext. Wer es nicht glaubt, muss es nicht: Da steht, wo es nachzulesen ist.