Ошибка: шаг <brew ссылка не завершилась успешно

Я пытаюсь установить node.js через Homebrew. К сожалению, я получаю эту ошибку:

➜  ~  brew install node
==> Downloading http://nodejs.org/dist/v0.8.10/node-v0.8.10.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/node/0.8.10
==> make install
==> Caveats
Homebrew installed npm.
We recommend prepending the following path to your PATH environment
variable to have npm-installed binaries picked up:
  /usr/local/share/npm/bin
Warning: Could not link node. Unlinking...
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
You can try again using `brew link node'
==> Summary
/usr/local/Cellar/node/0.8.10: 856 files, 13M, built in 103 seconds

Итак, я пытаюсь связать node вручную...

➜  ~  brew link node
Linking /usr/local/Cellar/node/0.8.10... Warning: Could not link node. Unlinking...

Error: Could not symlink file: /usr/local/Cellar/node/0.8.10/lib/node_modules/npm/scripts/relocate.sh
Target /usr/local/lib/node_modules/npm/scripts/relocate.sh already exists. You may need to delete it.
To force the link and delete this file, do:
  brew link -f formula_name

To list all files that would be deleted:
  brew link -n formula_name

Не повезло, поэтому я стараюсь связать node...

➜  ~  brew link -f node
Linking /usr/local/Cellar/node/0.8.10... Warning: Could not link node. Unlinking...

Error: Permission denied - /usr/local/lib/dtrace/node.d

Я не знаком с dtrace в любом случае, и я боюсь общаться с разрешениями, поэтому я попытался sudo..

➜ ~ git:(master) sudo brew link -f node
Password:
Error: Cowardly refusing to `sudo brew link'
You can use brew with sudo, but only if the brew executable is owned by root.
However, this is both not recommended and completely unsupported so do so at
your own risk.

Я попытался удалить node через brew uninstall node и выполнить попытку установки без везения.

Ответ 1

Пакет homebrew для node.js теперь включает в себя npm снова, так что это случилось со мной, когда я пропустил сообщение homebrew package об удалении автономной версии в первую очередь.

Предполагая, что, как и я, вы уже нарушили node/npm, сначала попробовав обновление, прежде чем зная npm uninstall npm -g, вы можете rm -rf /usr/local/lib/node_modules/npm, а затем brew link node. Это удалит автономный самообслуживаемый пакет npm (а не тот, который будет установлен brew), и позволяет brew symlink связать его с Cellar.

Ответ 2

Я запускаю Mac OS X Mavericks. Я попытался установить node 0.10.25, и верхний ответ мне не помог.

natevw говорит rm -rf /usr/local/lib/node_modules/npm, но если разрешения на /usr/local/lib/node_modules выглядят следующим образом:

drwxr-xr-x   3 root      admin   102 Feb  2 20:45 node_modules

то brew не сможет создать символическую ссылку npm в этом каталоге. Здесь мое решение:

Шаг 1: Обновить Homebrew

$ brew update

Шаг 2: удалите node/npm всюду на вашей системе

Некоторые из этих команд не нужны в зависимости от того, как вы установили node/npm в прошлом.

$ brew uninstall npm
$ brew uninstall node
$ npm uninstall npm -g
$ sudo rm -rf /usr/local/lib/node_modules

Примечание. У меня были паразитные node файлы, которые я нашел, запустив brew -v link node (который дал мне исчерпывающий вывод ошибок компоновки brew). Вам может потребоваться:

$ sudo rm -rf /usr/local/include/node
$ sudo rm -rf /usr/local/lib/node

Шаг 3. Откройте новый терминал и установите node

$ brew install node

Ответ 3

Вероятно, вы уже установили более старую версию node.js с использованием другого метода, поэтому вам нужно вручную удалить файлы, которые попадают в путь brew.

Сделайте brew link -n node и вручную удалите конфликтующие файлы и каталоги, затем повторите попытку brew link node.

Ответ 5

Я немного опаздываю, для меня это помогло:

* npm uninstall npm -g

* brew uninstall node

* brew install node

* sudo rm -rf /usr/local/lib/dtrace/node.d

* brew link node (caused error with permissions)

* sudo chmod 777 /usr/local/lib/dtrace/node.d

* brew link node

После этой последовательности все было успешным

Ответ 6

Попробуйте это. Получил от другой ссылки и работал у меня.

sudo brew uninstall node
brew update
brew upgrade
brew cleanup
brew install node
sudo chown -R $(whoami) /usr/local
brew link --overwrite node
sudo brew postinstall node

Ответ 7

У меня была такая же проблема после переноса всех моих приложений с моего старого Mac на новый.

Я нашел решение, запустив brew doctor:

Предупреждение: обнаружены сломанные символические ссылки. Удалите их с помощью brew prune

После запуска brew prune, Homebrew, наконец, вернется на дорожку:)

Ответ 8

У моей проблемы было несколько другое решение. Каталог, в котором brew хотел создать символические ссылки, не принадлежал текущему пользователю.

ls -la /usr/local/bin/lib/node | grep node дал:

drwxr-xr-x    3 24561  wheel   102 May  4  2012 node
drwxr-xr-x    7 24561  wheel   238 Sep 18 16:37 node_modules

Для меня исправлено следующее:

sudo chown $(users) /usr/local/bin/lib/node_modules
sudo chown $(users) /usr/local/bin/lib/node

пс. $(users) будет расширяться до вашего имени пользователя, немного ушел с пути, чтобы помочь ленивым пастерам для копирования;)

Ответ 9

спасибо @suweller.

Я исправил проблему:

➜  bin git:(master) ✗ brew link node
Linking /usr/local/Cellar/node/0.10.25... Warning: Could not link node. Unlinking...

Error: Permission denied - /usr/local/lib/node_modules/npm

У меня была та же проблема, что и у продавца:

➜  bin git:(master) ✗ ls -la /usr/local/lib/ | grep node
drwxr-xr-x   3 24561  wheel   102 11 Okt  2012 node
drwxr-xr-x   3 24561  wheel   102 27 Jan 11:32 node_modules

поэтому я исправил эту проблему:

➜  bin git:(master) ✗ sudo chown $(users) /usr/local/lib/node_modules
➜  bin git:(master) ✗ sudo chown $(users) /usr/local/lib/node

после того, как я исправил эту проблему, я получил еще одну:

➜  bin git:(master) ✗ brew link node
Linking /usr/local/Cellar/node/0.10.25... Warning: Could not link node. Unlinking...

Error: Could not symlink file: /usr/local/Cellar/node/0.10.25/lib/dtrace/node.d
Target /usr/local/lib/dtrace/node.d already exists. You may need to delete it.
To force the link and overwrite all other conflicting files, do:
  brew link --overwrite formula_name

To list all files that would be deleted:
  brew link --overwrite --dry-run formula_name

Итак, я удалил node.d:

➜  bin git:(master) ✗ sudo rm /usr/local/lib/dtrace/node.d

получила другую ошибку разрешения:

➜  bin git:(master) ✗ brew link node
Linking /usr/local/Cellar/node/0.10.25... Warning: Could not link node. Unlinking...

Error: Could not symlink file: /usr/local/Cellar/node/0.10.25/lib/dtrace/node.d
/usr/local/lib/dtrace is not writable. You should change its permissions.

и зафиксировал его:

➜  bin git:(master) ✗ sudo chown $(users) /usr/local/Cellar/node/0.10.25/lib/dtrace/node.d

и, наконец, все сработало:

➜  bin git:(master) ✗ brew link node
Linking /usr/local/Cellar/node/0.10.25... 1225 symlinks created

Ответ 10

Большинство проблем с установкой brew с node вызваны ошибками разрешений или ранее установленным node, а затем пытается установить его через brew. Решение, которое сработало для меня, наконец:

ПРЕДУПРЕЖДЕНИЕ. Это будет удалить nodejs (несколько версий) с осторожностью:

Тогда:

chmod +x /path/to/terminatenode.sh

Тогда:

./terminatenode.sh .
  • Затем выполните следующую команду:

    chown $USER/usr/local

  • Затем выполните обновление brew (продолжайте делать это до тех пор, пока все вещи не будут обновлены):

    brew update

  • Очистите brew и снова запустите обновление (возможно, избыточное) и запустите врача, чтобы убедиться, что все на месте:

    brew очистка; brew обновление; brew доктор

  • И, наконец, установите node через brew (verbose):

    brew установить -v node

Ответ 11

окончательный ответ: измените владельца этого каталога тем, кем вы являетесь

sudo chown -R `whoami` /usr/local/include

который также рекомендуется brew, если вы запустите brew doctor

Ответ 12

Мне также удалось испортить мой NPM и установить пакеты между этими версиями Homebrew и независимо от того, сколько раз я отсоединял/связывал и удалял/устанавливал node, он все еще не работал.

Как оказалось, вам нужно удалить NPM с пути, иначе Homebrew не будет его устанавливать: https://github.com/mxcl/homebrew/blob/master/Library/Formula/node.rb#L117

Надеюсь, это поможет кому-то с той же проблемой и сохранить этот час или около того, мне пришлось потратить на поиск проблемы...

Ответ 13

Не знаю, если это хорошая идея или нет: после успешного использования всех других решений я просто переименовал /usr/local/lib/dtrace, связал node и снова переименовал каталог. После этого node работал должным образом.

Ответ 14

Я боролся с этим некоторое время. (для меня "npm uninstall npm -g" ничего не делал)

Я пробовал кучу вещей:

npm uninstall npm -g
brew uninstall node
brew install node

У меня все еще были проблемы, и я получал ошибки, когда пытался связать файлы node

Наконец, я пробовал это

brew link --overwrite node

Казалось, это исправлено. (он перезаписывает конфликтующие файлы, а также ссылки node и npm)

Надеюсь, что это поможет

Ответ 15

Я полностью удалил brew и снова запустился, чтобы снова найти ту же проблему.

Brew, похоже, работает, символизируя необходимые двоичные файлы в вашей системе, где другие методы установки обычно копируют файлы.

Я нашел здесь существующий набор библиотек node:

/usr/local/include/node

После некоторой царапины на голове я вспомнил установку node на дату против этой старой версии, и она не была через brew.

Я вручную удалил всю эту папку и успешно связал npm.

Это объясняет, почему использование brew деинсталляции или даже удаления brew не имело никакого эффекта.

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

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

Ответ 16

Разрушила мою голову над символикой node.. и ничего не работало... но, наконец, что работало, устанавливают правильные разрешения. Этот "sudo chown -R $(whoami)/usr/local" сделал для меня работу.

Ответ 17

Я исправил это в El Capitan, используя следующую команду. Честно говоря, не знаю, что он делает, но думал, что я поделюсь с тех пор, как он исправил мою проблему.

brew link --overwrite node

Ответ 18

Вам нужно вручную удалить пакет npm.

сначала отсоединить node: brew link -n node

удалить папку npm: rm -R /usr/local/Cellar/node/0.8.10/lib/node_modules/npm

еще раз: brew link node

появится мягкая ссылка на новое местоположение npm