2013-02-09 3 views
11

ich habe diesen Fehler, wenn versuchen, Kaffee-Skript mit diesem Befehl zu installieren:NPM Fehler, wenn global auch die Installation, wenn Verzeichnisse beschreibbar sind

npm install -g --verbose coffee-script opal 

dies ist die Fehlermeldung:

npm ERR! Error: EACCES, symlink '../lib/node_modules/coffee-script/bin/coffee' 
npm ERR! { [Error: EACCES, symlink '../lib/node_modules/coffee-script/bin/coffee'] 
npm ERR! errno: 3, 
npm ERR! code: 'EACCES', 
npm ERR! path: '../lib/node_modules/coffee-script/bin/coffee' } 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator. 

npm info postuninstall [email protected] 
npm ERR! Error: EACCES, symlink '../lib/node_modules/opal/bin/opal-node' 
npm ERR! { [Error: EACCES, symlink '../lib/node_modules/opal/bin/opal-node'] 
npm ERR! errno: 3, 
npm ERR! code: 'EACCES', 
npm ERR! path: '../lib/node_modules/opal/bin/opal-node' } 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator. 

der Ordner/usr/local/bin und/usr/local/lib/node_modules sind dem aktuellen Benutzer eigen und schreibbar, und ich möchte diesen npm-Befehl nicht mit root ausführen, um zu wissen, in welchem ​​Ordner der npm versucht hat, einen Symlink zu erstellen ?

ich verwende npm 1.2.9-1chl1 ~ quantal1 und NodeJS 0.8.19-1chl1 ~ quantal1

Antwort

19

Ihre Knoteninstallation verwendet Systemverzeichnisse. Verwenden Sie sudo, wenn -g mit

sudo npm install -g --verbose coffee-script opal 
+0

Gibt es etwas von Natur aus unsicheres dabei? – snapfractalpop

+7

Ich würde mich nicht wohl dabei fühlen. Ich würde eher Knoten in einer Weise installieren, die sudo nicht erfordert. –

+0

Hm .. irgendeinen Weg "rückgängig zu machen", wenn wir es schon mit Sudo laufen ließen? – snapfractalpop

3

ah, mit diesem Befehl:

npm -g bin 

es ausgeben würde, so etwas wie dieses:

/usr/bin # this is the folder nodejs wanted to write.. 

dann können Sie chmod oder chown es so kann es für die Installation geschrieben werden.

+0

Diese hilfreiche Informationen ist aber keine Antwort auf die Frage. –

2

Ich hatte ein ähnliches Problem bei NPM modules won't install globally without sudo, war das Problem, dass wenn ich Knoten installiert Ich habe es mit sudo über chris/lea ppa Repo.

war meine Lösung Knoten deinstallieren und dann auf diese Weise installieren:

herunterladen neueste stabile Knoten Quellen aus nodejs.org #in meinem Fall Knoten v0.10.20.tar.gz

tar -zxf Knoten-v0.10.20.tar.gz #uncompress Quellen

cd node-v0.10.20 #enter unkomprimierten Ordner

sudo chown $ USER -R/usr/local

configure prefix =/usr/local & & machen & & make install

PD: Wenn Sie Eigentum an das Verzeichnis/usr/local Ordner nicht ändern möchten, können Sie Installieren Sie es irgendwo, wo Sie bereits besitzen. Das Problem dieses Ansatzes ist, dass Sie den Installationsordner mit der Bash-Befehlszeile binden, so dass wir später den Knoten Befehl verwenden können auf

mkdir ~/opt

configure prefix = ~/opt & & machen & & make install

echo 'export PATH = ~/opt/bin: $ {PATH}' >> ~/.bashrC#OR ~/.profile oder ~/.bash_profile oder ~ /.zshenv abhängig von der aktuellen fürs Betriebssystem

Mit einem dieser Ansätze, können Sie folgendes tun, ohne Verwendung von sudo

npm installieren -g --verbose Kaffee-script opal

0

Hatte ein ähnliches Problem. Stellt sich heraus, ich hatte etwas in project/node_modules Verzeichnis mit sudo installiert. In meinem Fall waren es einige der Abhängigkeiten UND AUCH .bin Verzeichnis. Ich habe diese fehlerhaften Verzeichnisse gelöscht und dann npm install erneut ausgeführt und es ist erfolgreich. Ich habe auch globale Winkelmesser und Phantomjs neu installiert, aber nicht sicher, ob das erforderlich war. Ich bin sicher, dass es das schlechte .bin Verzeichnis war, das dies verursacht.

+0

Sie mussten die "schlechten" Verzeichnisse nicht löschen, sondern nur ihre Berechtigungen und/oder Eigentümer, wie in anderen Antworten erläutert. –

15

Sie können chown NPMs bin Ihren Benutzername mit diesem Motto dieses Problem zu lösen:

$ chown -R `whoami` `npm -g bin` 
+1

Oder 'sudo chown ...' –

+4

vorsichtig! ändert Besitz alles in '/ usr/bin /' (z. B. 'sudo' auch) – arve0

Verwandte Themen