2012-01-26 13 views
9

Node y npm están instalados y actualizados, pero siguen apareciendo al intentar instalar coffeescript. Todavía soy nuevo en la programación, por lo que cualquier consejo sería muy apreciado.error al instalar coffeescript en mac 10.7.2

test-macbook:~ Test$ npm -v 
1.1.0-3 
test-macbook:~ Test$ node -v 
v0.6.8 
test-macbook:~ Test$ npm install -g coffee-script 
npm http GET https://registry.npmjs.org/coffee-script 
npm http 304 https://registry.npmjs.org/coffee-script 
npm ERR! Could not create /usr/local/lib/node_modules/___coffee-script.npm 
npm ERR! error installing [email protected] 

npm ERR! Error: EACCES, permission denied '/usr/local/lib/node_modules/___coffee-script.npm' 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator. 
npm ERR! 
npm ERR! System Darwin 11.2.0 
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "coffee-script" 
npm ERR! cwd /Users/Dylan 
npm ERR! node -v v0.6.8 
npm ERR! npm -v 1.1.0-3 
npm ERR! path /usr/local/lib/node_modules/___coffee-script.npm 
npm ERR! code EACCES 
npm ERR! message EACCES, permission denied '/usr/local/lib/node_modules/___coffee-script.npm' 
npm ERR! errno {} 
npm ERR! 
npm ERR! Additional logging details can be found in: 
npm ERR!  /Users/Dylan/npm-debug.log 
npm not ok 

Respuesta

8

El mensaje de error es bastante claro:

npm ERR! Error: EACCES, permission denied '/usr/local/lib/node_modules/___coffee-script.npm' 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator. 

no se puede instalar en /usr/local/lib/node_modules porque no tiene los permisos necesarios. Intente utilizar sudo:

dylan-hermans-macbook:~ sudo npm install -g coffee-script 

autor del MNP recomienda no usar sudo porque los paquetes se pueden ejecutar comandos arbitrarios por lo sudo npm install es peligroso. Él sugiere cambiar la propiedad de /usr/local a su usuario. Creo que es un consejo horrible que simplemente te da una falsa sensación de seguridad: si un paquete puede ejecutar comandos arbitrarios, puede interferir con tu directorio de inicio (incluidos todos tus datos personales, ejecutables, archivos de configuración e inicio, ...) independientemente de sudo o quien posee /usr/local así que no usar sudo realmente no hace mucho por usted. Si no confías en un paquete, entonces no lo instales; si no confías en un paquete, ¿cómo puedes usarlo? El árbol /usr/local sigue siendo un árbol de directorio del sistema y OSX sigue siendo un sistema operativo multiusuario.

OMI una solución mucho mejor es doble:

  1. No instale o utilice los paquetes que no sean de confianza. Si lo instalas, entonces estás confiando en que ese código sea tu (a menos que siempre vayas a ejecutarlo en una cárcel de algún tipo, pero si vas a hacer tantas cosas, es mejor escribir el código tú mismo) .
  2. Deje sudo y /usr/local solo e instálelo todo dentro de su directorio personal. Estará sujeto a la mayoría de los mismos peligros que usar sudo o cambiar la propiedad de /usr/local, pero al menos no tendrá malos hábitos.
+1

¡Gracias! No sabía que la solución era tan simple. Me aseguraré de tener esto en cuenta para problemas similares que encuentro en el futuro. – Anconia

+1

Consulte la respuesta de Tim Schaub, a continuación, para conocer la forma correcta de manejar esto. –

+0

Esto no es una solución de ninguna manera, la solución es darle al usuario acceso a '/ usr/local', como lo dice @TimSchaub correctamente. –

13

Siguiendo the advice de NMP autor Isaac Z. Schlueter:

Le recomiendo no hacer la gestión de paquetes con sudo!

En lugar de sudo npm install ... que podría en lugar de cambiar los permisos de su directorio /usr/local:

sudo chown -R $USER /usr/local 

Después de hacer esto una vez, usted debería ser capaz de npm install ... (sin sudo).

+0

tiene toda la razón: este es el punto de usar gestores de paquetes como npm o homebrew :) – bx2

9

Me doy cuenta de que este es un hilo más antiguo, pero acabo de encontrarlo y quería actualizar la última respuesta.

Cambiar el propietario de todo el directorio/usr/local es una respuesta horrible a esta pregunta. No hay ninguna razón para que lo hagas.

Si mira el mensaje de error de npm, se le denegarán los permisos de escritura en/usr/local/lib/node_modules/Sé que después de instalar node y npm en OS X Mavericks, su propietario predeterminado es inexistente usuario.

0 drwxr-xr-x 3 24561  wheel  102 Jan 23 14:17 node_modules 

si sólo está funcionando nodo/NPM en su máquina de desarrollo local, basta con cambiar el propietario de la carpeta node_modules a su usuario:

sudo chown -R yourusername /usr/local/lib/node_modules 

continuación, puede instalar módulos con NPM sin sudo y sin cambiar el propietario de/usr/lib de root, como debería ser.

+2

'sudo chown -R $ USER/usr/local/lib/node_modules' evita el problema de los usuarios que ingresan accidentalmente el nombre de usuario incorrecto. – ThomasW