2013-02-09 12 views
11

ho questo errore quando provo ad installare il caffè-script utilizzando questo comando:NPM errore durante l'installazione a livello globale anche quando le directory sono scrivibili

npm install -g --verbose coffee-script opal 

questi sono il messaggio di errore:

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. 

la cartella/usr/local/bin e/usr/local/lib/node_modules sono di proprietà e scrivibili dall'utente corrente, e non voglio eseguire quel comando npm usando root, come sapere quale cartella che npm ha provato a creare un symlink ?

sto usando npm 1.2.9-1chl1 ~ quantal1 e nodejs 0.8.19-1chl1 ~ quantal1

risposta

19

l'installazione del nodo utilizza le directory di sistema. Utilizzare sudo quando si utilizza -g

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

C'è qualcosa di intrinsecamente pericoloso riguardo a ciò? – snapfractalpop

+7

Non mi sentirei a mio agio a farlo in quel modo. Preferisco installare il nodo in modo che non richieda sudo. –

+0

Hm .. un modo per "annullare" quello se lo abbiamo già eseguito con sudo? – snapfractalpop

3

ah, con questo comando:

npm -g bin 

sarebbe uscita qualcosa di simile:

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

quindi è possibile chmod o chown così può essere scritto per l'installazione.

+0

Si tratta di informazioni utili, ma non risponde alla domanda. –

2

Ho avuto un problema simile al NPM modules won't install globally without sudo, il problema era che quando ho installato il nodo l'ho fatto con sudo tramite Chris/lea ppa repo.

La mia soluzione era quella di disinstallare nodo e quindi installarlo in questo modo:

Scarica tutte le fonti di nodi stabili dal nodejs.org #in mio caso nodo-v0.10.20.tar.gz

tar -zxf nodo-v0.10.20.tar.gz fonti #uncompress

cd nodo-v0.10.20 #Invio non compresso cartella

sudo chown -R $ USER/usr/local

./configure --prefix =/usr/local & & fare & & fanno installare

PD: Se non si desidera cambiare la proprietà della cartella/usr/local, è possibile installalo da qualche parte che già possiedi. Il problema di questo approccio è che si avrà di impegnare la cartella di installazione con la riga di comando bash in modo da poter utilizzare il comando del nodo in seguito

mkdir ~/opt

./configure --prefix = ~/opt & & fare & & fanno installare

echo 'export PATH = ~/opt/bin: $ {PATH}' >> ~/.bashrC#o ~/.profile o ~/.bash_profile o ~ /.zshenv in funzione della corrente Sistema operativo

Con uno di questi approcci, si sarà in grado di fare quanto segue senza l'uso di sudo

npm installare -g --verbose opale caffè-script

0

Aveva un problema simile. Risulta che ho avuto qualcosa nella directory project/node_modules installata con sudo. Nel mio caso erano alcune delle dipendenze E ANCHE la directory .bin. Ho eliminato queste cattive directory, quindi ho eseguito di nuovo npm install ed è riuscito. Ho anche reinstallato il goniometro globale e i phantomjs, ma non sono sicuro che fosse necessario. Sono sicuro che è stata la cattiva directory (di proprietà della root) .bin a causare questo.

+0

Non è stato necessario eliminare le directory "cattive", è sufficiente impostare le autorizzazioni e/o le proprietà come spiegato in altre risposte. –

15

È possibile chown NPM del bin al vostro nome utente con questo uno di linea per risolvere questo problema:

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

Oppure sudo chown ... ' –

+4

attento! cambia proprietario di tutto in/usr/bin/'(ad esempio,' sudo' anche) – arve0

Problemi correlati