Ich habe versucht, generator-anglejs mit Yo ( Yoeman ) ohne sudo zu installieren :
npm install -g generator-angular
Ich bekomme:
Error: EACCES, mkdir '/usr/lib/node_modules/generator-angular'
Wenn ich tippe sudo yo
, sagst du mir, dass ich kein Sudo verwenden soll (was vollkommen verständlich ist).
Ich habe ein ~/node_modules
Verzeichnis - warum installierst du seine Pakete dort nicht?
yo angular
?Antworten:
Generatoren sind für die globale Installation ausgelegt. Andernfalls müssen Sie immer den Generator installieren, den Sie in jedem Projekt verwenden möchten, was unnötig schmerzhaft ist. Außerdem sehen Sie nicht das schöne
yo
Menü, in dem alle verfügbaren Generatoren aufgelistet sind (es sei denn, Sie installieren sie alle lokal):Einrichten von npm für die globale Installation
Wie können wir npm dazu bringen, Pakete global zu installieren? Wie Sie richtig gesagt haben, sollten Sie niemals
yo
mit Sudo laufen . Es gibt viele verschiedene Lösungen für dieses Problem und Sie können Stunden damit verbringen, ihre Vor- und Nachteile religiös zu diskutieren.Ich persönlich mag es nicht, meine Benutzerpakete im globalen
/usr/
Ordner zu installieren ./usr/
ist für Software, die von allen Benutzern auf dem Computer gemeinsam genutzt wird. Auch wenn nur der Computer verwendet wird, gibt es gute Gründe, die Gestaltung der Unix-Dateisystemhierarchie zu respektieren. Zum Beispiel, wenn Sie sich an einem Punkt entscheiden, Ihre gesamte Knoteninstallation zu löschen.Meine bevorzugte Möglichkeit
npm
, Pakete global zu installieren, ohne auszubrechen,$HOME
besteht darin, ein lokales Knotenpräfix festzulegen . Das ist so einfach wie Laufenecho 'prefix = ~/.node' >> ~/.npmrc
in Ihrer lokalen Shell. Danach möchten Sie Ihren $ PATH anpassen, um auf das neue Installationsziel für ausführbare Knoten des globalen Knotens zu verweisen, indem Sie die Konfiguration Ihrer bevorzugten Shell anpassen. ZB durch Hinzufügen
export PATH="$PATH:$HOME/.node/bin"
zu deinem
~/.bashrc
. Danach können Sienpm install -g generator-angular
problemlos ohne sudo ausführen , ohne auf Berechtigungskonflikte zu stoßen. Wenn etwas völlig kaputt ist und Sie von vorne beginnen möchten, müssen Sie lediglich Ihr~/.node
Verzeichnis entfernen .quelle
sudo npm update -gf
und es hat es behoben. Was habe ich getan und war es in Ordnung, dass ich in diesem Fall Sudo verwendet habe?echo 'export PATH=$HOME/.node/bin:$PATH' >> ~/.bashrc
Dank @passy habe ich es endlich geschafft, dies auf Ubuntu 13.04 (falls jemand ähnliche Einrichtungsprobleme hat) mit den folgenden Funktionen zum Laufen zu bringen:
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
versuchen zu rennen:
npm install -g yo
führte zu
Error: EACCES, mkdir '/usr/lib/node_modules/yo'
Behoben mit:
echo prefix = ~/.node >> ~/.npmrc echo 'export PATH=$HOME/.node/bin:$PATH' >> ~/.bashrc . ~/.bashrc
Laufen:
führte zu:
Error: EACCES, permission denied '/home/username/.config/configstore/update-notifier-yo.yml'
Behoben mit:
sudo chown yourusername:yourusername /home/yourusername/.config/configstore/update-notifier-yo.yml
quelle
$USER:staff
für Mac wechseln oder einfach$USER:USER
Hallo, in meinem Fall (unter Ubuntu 12.04) hat der Präfixzusatz in ~ / .npmrc nichts geändert.
Wenn ja, erstellen Sie das Knotenpaket selbst und installieren Sie es in / opt / node oder /home/user/.node .
quelle
Ich hatte einen fast identischen Fehler mit einer nicht autorisierten
.yo-rc.json
Datei in meinem Stammverzeichnis aus einem Projekt, das ich zuvor installiert hatte. Yeoman wechselte in der Mitte der Installation von cwd vom Installationsverzeichnis zum Stammverzeichnis, gab jedoch nur den EACCESS-Berechtigungsfehler aus, ohne dass Angaben zum Installationsverzeichnis gemacht wurden/
. Es hat ewig gedauert, um herauszufinden, warum dies so war, und das Debuggen durch die Yeoman-Quelle beinhaltete, aber ich habe schließlich erfahren, dass Yeoman den Verzeichnisbaum durchsucht, bis er einen findet.yo-rc.json
, und den Code dort generiert, indem er chdir an den neuen Speicherort ruft.Yeoman sollte möglicherweise überprüfen, ob der Benutzer über Schreibberechtigungen für das Verzeichnis verfügt. Alternativ könnte in der Ausgabe entweder erwähnt werden, dass sich das cwd geändert hat, oder der Name des Installationsverzeichnisses gedruckt werden, wenn sich der gefundene Ort von
.yo-rc.json
cwd unterscheidet.Der Befehl zum Suchen unerwünschter .yo-rc.json-Dateien
sudo find / -name .yo-rc.json
quelle
Auf der Einstiegsseite von yoeman wird der folgende Befehl angezeigt:
In meinem Fall ist $ NODE_PATH (in meinem Fall Ubuntu 14.04 in /etc/profile.d definiert) nicht dasselbe wie npm root. Das Hinzufügen von npm root in $ NODE_PATH löst das Problem.
quelle
Ich habe versucht , zu erhalten
yeoman
schön mit meiner zu spielenvagrant
Box und das ist , was ich tun musste, installierennpm
Pakete global ohnesudo
aufubuntu
:1. Erstellen Sie das Verzeichnis zum Speichern globaler Pakete
$ mkdir "${HOME}/.npm-packages"
2. Geben Sie an,
npm
wo die global installierten Pakete abgelegt werden sollenFügen Sie dieses Snippet in Ihre
~/.npmrc
Datei ein:prefix=${HOME}/.npm-packages
3. Stellen Sie sicher, dass
npm
das installiertebinaries
Gerät usw. gefunden werden kannFügen Sie dieses Snippet in Folgendes ein
.bashrc/.zshrc
:NPM_PACKAGES="${HOME}/.npm-packages" PATH="$NPM_PACKAGES/bin:$PATH" // `unset` `manpath` to allow inheritance from `/etc/manpath` with // the `manpath` command unset MANPATH // remove this line if you have previously modified `manpath` export MANPATH="$NPM_PACKAGES/share/man:$(manpath)"
4. Führen Sie das folgende Terminal aus oder starten Sie es neu
$ source ~/.bashrc
Hoffe das hilft jedem, der sich in einer ähnlichen Situation befindet.
quelle