ошибка установки coffeescript на mac 10.7.2 - PullRequest
9 голосов
/ 27 января 2012

Node и npm установлены и обновлены, но продолжают получать эту ошибку при попытке установить coffeescript. Я все еще новичок в программировании, поэтому любые советы будут с благодарностью.

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 coffee-script@1.2.0

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

Ответы [ 3 ]

13 голосов
/ 04 ноября 2012

После совета автора НМП Исаака З. Шлютера:

Я настоятельно рекомендую вам не выполнять управление пакетами с помощью sudo!

Вместо sudo npm install ... вы могли бы вместо этого изменить разрешения для вашего каталога /usr/local:

sudo chown -R $USER /usr/local

Сделав это один раз, вы сможете npm install ... (без sudo).

9 голосов
/ 17 февраля 2014

Я понимаю, что это старая ветка, но я наткнулся на это и хотел обновить последний ответ.

Смена владельца всего каталога / usr / local - ужасный ответ на этот вопрос.Нет никакой причины, по которой вам следует это делать.

Если вы посмотрите на сообщение об ошибке от npm, вам будет отказано в правах на запись в / usr / local / lib / node_modules / Я знаю, что после установки node и npmв OS X Mavericks его владельцем по умолчанию является несуществующий пользователь.

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

Если вы просто запускаете node / npm на локальном компьютере разработки, просто измените владельца папки node_modules на своего пользователя.:

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

Затем вы можете установить модули с npm без sudo и без изменения владельца / usr / lib из root, как и должно быть.

8 голосов
/ 27 января 2012

Сообщение об ошибке довольно ясно:

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.

Вы не можете установить его в /usr/local/lib/node_modules, потому что у вас нет необходимых разрешений. Попробуйте использовать sudo:

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

Автор npm рекомендует не использовать sudo, поскольку пакеты могут запускать произвольные команды, поэтому sudo npm install опасно. Он предлагает сменить владельца /usr/local на своего пользователя. Я думаю, что это ужасный совет, который просто дает вам ложное чувство безопасности: если пакет может выполнять произвольные команды, он может связываться с вашим домашним каталогом (включая все ваши личные данные, исполняемые файлы, файлы конфигурации и запуска, ...) независимо от того, sudo или кому принадлежит /usr/local, поэтому использование sudo на самом деле мало что для вас значит. Если вы не доверяете пакету, не устанавливайте его; если вы не доверяете пакету, то как вы можете его использовать? Дерево /usr/local по-прежнему является деревом системных каталогов, а OSX по-прежнему является многопользовательской операционной системой.

ИМО, гораздо лучшее решение имеет два аспекта:

  1. Не устанавливайте и не используйте пакеты, которым вы не доверяете. Если вы устанавливаете его, то вы доверяете этому коду (если вы не собираетесь всегда запускать его в какой-то тюрьме, но если вы пойдете на такую ​​длину, вам, вероятно, лучше написать код самостоятельно) .
  2. Оставьте sudo и /usr/local в покое и установите все это в вашем домашнем каталоге. Вы будете подвержены большинству тех же опасностей, что и при использовании sudo или смене владельца /usr/local, но, по крайней мере, вы не будете приобретать вредные привычки.
...