2012-01-26 2 views
9

Узел и npm установлены и обновлены, но продолжают получать эту ошибку при попытке установить coffeescript. Я по-прежнему новичок в программировании, поэтому любой совет будет очень благодарен.ошибка установки coffeescript на 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 

ответ

8

Сообщение об ошибке достаточно ясно:

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 

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

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

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

Спасибо! Я не знал, что решение было настолько простым. Я обязательно буду помнить об аналогичных проблемах, с которыми я столкнулся в будущем. – Anconia

+1

Пожалуйста, см. Ответ от Тима Шауба ниже, для правильного способа справиться с этим. –

+0

Это не решение в любом случае, решение заключается в том, чтобы предоставить пользователю доступ к '/ usr/local', поскольку @TimSchaub корректно помещает его. –

13

После the advice НМП автор Исаак З. Schlueter:

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

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

sudo chown -R $USER /usr/local 

После этого один раз, вы должны быть в состоянии npm install ... (без Sudo).

+0

вы абсолютно правы - это все дело в использовании менеджеров пакетов, таких как npm или homebrew :) – bx2

9

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

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

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

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

Если вы просто работаете узел/НПМ на локальном компьютере разработчика, просто сменить владельца папки node_modules своему пользователю:

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

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

+2

'sudo chown -R $ USER/usr/local/lib/node_modules' позволяет избежать проблем с неправильным вводом имени пользователя. – ThomasW

 Смежные вопросы

  • Нет связанных вопросов^_^