Помилка: крок "варити посилання" не завершився успішно


158

Я намагаюся встановити 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

Тоді я намагаюся зв’язати вузол вручну ...

  ~  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

Не пощастило, тому я намагаюся насильно зв’язати вузол ...

  ~  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 в жодному плані і боюся поплутатися з дозволами, тому я спробував судо ..

 ~ 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.

Я спробував видалити вузол за допомогою brew uninstall nodeі повторно спробу встановити без удачі.


Я не можу отримати автоматику. mongodb та вузол для зв’язку з домашньою мовою
піксель 67,

Відповіді:


136

Пакет homebrew для node.js тепер знову включає npm, тому це трапилось зі мною, коли я пропустив повідомлення пакета homebrew про видалення автономної версії спочатку.

Якщо припустити, як я, ви вже зламали вузол / npm, намагаючись оновити, перш ніж дізнатися npm uninstall npm -gспочатку, ви можете, rm -rf /usr/local/lib/node_modules/npmа потім brew link node. Це вилучає окремий самостійний пакет npm (а не той, який заварювали б встановити), і дозволяє варити, що пов'язує його в комплекті з підвалом.


9
Після видалення npm вам потрібно закрити і знову відкрити свій термінал, щоб видалити його зі свого шляху, щоб посилання працювало належним чином, як @dain згадував у своєму коментарі.
kflorence

Це працювало для мене. У моєму випадку я не зміг зв’язати Elixir та Erlang під час оновлення. Проблеми, що викликають занепокоєння, не належали моєму імені користувача, а були "root" Я вирішив видалити ці каталоги та перевстановити.
Тренер Робук

при спробі вузла посилання я отримую: * Помилка: Немає такого кегу: / usr / local / Cellar / node * | якісь ідеї?
SuperUberDuper

1
Спробувавши оновити npm, я витратив годину, намагаючись зрозуміти це. Brew не дозволив би мені зв’язатися, поки спочатку не було видалено окрему версію. Рекомендації від Nate працювали для мене.
Брендон Клапп

Як переустановити npm? Або він встановлюється за допомогою вузла установки пива?
marciokoko

153

Я запускаю Mac OS X Mavericks. Я спробував встановити вузол 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 symlink у цьому каталозі. Ось моє рішення:

Крок 1: Оновіть домашню мову

$ brew update

Крок 2. Видаліть вузол / npm скрізь у вашій системі

Деякі з цих команд не потрібні залежно від того, як ви встановили вузол / npm у минулому.

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

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

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

Крок 3: Відкрийте новий термінал і встановіть вузол

$ brew install node

1
Дякую! Це мені дуже допомогло і вирішило мою проблему. +1
Ricky Mutschlechner

5
Працювало для мене ... хоча мені довелося видалити каталог node_modules (що закінчується в 's') каталозі ...
songololo

1
Це має стати прийнятою відповіддю. Підходить і для Йосеміті.
Рог

1
Це працювало і для мене, проте мені довелося виконати цю команду chown, щоб остаточно дозволити посилання. sudo chown -R whoami/ usr / місцевий соус
straubcreative

1
Щоб видалити вузол скрізь на вашому mac, я дотримувався цієї статті: stackabuse.com/how-to-uninstall-node-js-from-mac-osx
ankitkpd

40
sudo chown -R $(whoami) /usr/local 

було б чудово, як зазначено в проблемі усунення несправностей на сайті

https://github.com/Homebrew/homebrew/wiki/troubleshooting


3
Я здивований, що вони рекомендують це. Чи не краще було б це зробити: sudo chmod -R g+w /usr/local(хоча чесно, обидва мене лякають)
getWeberForStackExchange

@getWeberForStackExchange Я спробував те, що ви сказали, але це не змінило для мене. Будь-які ідеї, чому це може бути?
f1lt3r

@AlistairMacDonald Ви, мабуть, до цього працювали, але, мабуть, мені знадобиться більше інформації, щоб дізнатися, чому у вас виникли проблеми. Зміна власності на все в / usr / local повинна дозволяти поточному користувачеві створювати посилання на вузол у / usr / local структурі. Я пропонував просто змінити групові дозволи кожного файлу замість права власності, що трохи менш шалено. Моя команда припускає, що ваш користувач є частиною групи, якій належать всі / usr / local. Можливо також, що в / usr / local є різні групи, для яких потрібна chgrpкоманда.
getWeberForStackExchange

Я встановив домашню пиву під ОС X 10.11 спеціально, щоб отримати команди півночі та wget. У мене не встановлено npm. Крок "варити посилання" не вдався, як описано в питанні під час встановлення mc. Ця відповідь спрацювала на мене; Я вніс зміни, повторно запустив посилання з "варити ланку опівночі-командир", яка потім нормально побігла. Після цього, набравши "mc" у командному рядку, вихований командир опівночі, як очікувалося. Після цього "варити встановити wget" працював без фанфару. Чудова відповідь.
fyngyrz

цю команду рекомендує brew doctor, але я вважаю за краще sudo su, виконайте команди, а потім закрийте термінал
jchnxu

37

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

Виконайте brew link -n nodeта вручну видаліть ці конфліктуючі файли та каталоги та спробуйте brew link nodeще раз.


4
Взяв деякий час, але саме те, що мені потрібно було зробити. Дякую :)
Крістофер

У мене така сама проблема aspell. Як знайти конфліктуючі файли та каталоги?
LWZ

33

Я трохи запізнювався, що для мене спрацювало:

* 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

Все було успішним після цієї послідовності


Це нарешті спрацювало для мене. У мене виникли проблеми після того, як я спробував встановити вузол через вариво після того, як уже встановлено npm. Це по суті для мене зламало npm. Мені довелося rm -rf папку npm, а потім встановити через brew (видалення npm більше не працювало для мене). Після цього решта кроків спрацювали чудово.
rdrobinson3

5
sudo chmod 777Це ніколи не є правильним рішенням, якщо у вас виникли проблеми з дозволом, дослідіть, чому вони виникають, і встановіть мінімальний рівень дозволів, необхідний для виконання завдання. Ця команда дозволить файлу змінювати будь-кого в системі.
bobmagoo

Блискуча. Дякую. Незважаючи на те, що у мене не було проблем з перманентною справою brew link nodeвперше.
Константинідес Беде

Замість того, щоб chmod був цей каталог, я просто взяв на себе його право. chown myuser -R -v / usr / local / lib / dtrace / У мене також була проблема, що dtrace не існував як каталог. Помилка була однаковою, але жодного каталогу не було.
Jason Short

15

Спробуйте це. Отримав іншу довідку і працював на мене.

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

brew postinstall nodeбув квиток
прототип

Це був квиток! Чомусь мені довелося запустити оновлення варити 2X, і вдруге він попросив мене встановити оновлення до XCode. Між brew link --overwrite nodeта остаточною командою, здається, все працює. Заключна команда, яку ви запропонували, не працює через 'sudo. Натомість використовуйтеbrew postinstall node
Дані Амсалем

10

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

Я знайшов рішення, запустивши brew doctor:

Попередження: Знайдені зламані символьні посилання. Видаліть їх за допомогоюbrew prune

Після запуску brew pruneHomebrew нарешті повернувся на трек :)


4

Моя проблема мала дещо інше рішення. Поточний користувач не був власником каталогу, у якому пиво хотів створити символьні посилання.

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)розшириться до вашого імені користувача, трохи пішов з мого шляху, щоб допомогти ледачим копієрам пастерів;)


2
У мене було те саме питання. Це, мабуть, може статися, якщо запустити "зробити встановлення" для якогось іншого додатка вручну. Я нещодавно робив саме це, і рішенням було подати клопіт, як ти.
Річард Таттл

4

thx @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

3

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

ПОПЕРЕДЖЕННЯ. Це дозволить видалити nodejs (кілька версій), які використовуються з обережністю:

  1. Видаліть вузол через заварку:

    заваріть видалення вузла

  2. також зробили через силу:

    варити вузол для видалення --force

  3. Щоб використовувати джерело сценарію: Видаліть вузол :

    curl -O https://raw.githubusercontent.com/DomT4/scripts/master/OSX_Node_Removal/terminatenode.sh

Тоді:

chmod +x /path/to/terminatenode.sh

Тоді:

./terminatenode.sh .
  1. Тоді обов’язково виконайте таку команду:

    chown $ USER / usr / local

  2. Потім зробіть оновлення заварки (продовжуйте робити це, поки всі речі не оновлюються):

    оновлення варіння

  3. Очистіть заварку та запустіть оновлення ще раз (можливо, зайве) та запустіть лікаря, щоб переконатися, що все на місці:

    заварити очищення; оновлення заварки; заварювати лікар

  4. І, нарешті, встановіть вузол через piw (багатослівний):

    варити встановити -v вузол


Номери форматуються неправильно ... але кроки є. Виправить проблему форматування завтра.
AhsenB

2

остаточна відповідь: змінити власника цього каталогу на того, ким ти є

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

що також рекомендується заварювати, якщо ви запускаєте заварювальний лікар


2

Я отримав помилку під час встановлення, що не в змозі зв’язати вузол та / usr / local / include не можна записати

Нижче рішення працювало для мене: - Спершу створіть папку include, зверніть увагу, що для цього потрібні привілеї sudo

cd /usr/local

sudo mkdir include

sudo chown -R $(whoami) $(brew --prefix)/*

brew link node

1

Мені також вдалося зіпсувати свій NPM і встановити пакети між цими версіями Homebrew, і незалежно від того, скільки разів я від’єднав / зв’язав та видалив / встановив вузол, він все ще не працював.

Як виявляється, вам потрібно видалити NPM зі шляху, інакше Homebrew не встановить його: https://github.com/mxcl/homebrew/blob/master/Library/Formula/node.rb#L117

Сподіваюся, що це допоможе комусь із тією ж проблемою, і врятуйте ту годину або близько того, що мені довелося витратити на пошуки проблеми ...


Дякую. Мені довелося це робити в поєднанні з найвищою оцінкою, щоб правильно працювати.
kflorence

1

За допомогою Finder, Видаліть цей файл:

/usr/local/lib/dtrace/node.d

в терміналі:

$ brew link --overwrite --dry-run node

тоді:

$ brew link node

1
Коли я біжу brew link --overwrite --dry-run node, то бачу помилку No such keg: /usr/local/Cellar/node. Що я пропускаю?
PKHunter

1

Я перепробував всі методи, і жоден з них не працює. Найпростіший спосіб - перевстановити вузол з https://nodejs.org/en/download/

Просто завантажте pkgта встановіть його. Тепер я працюю npmі nodeзнову.


0

Не знаю, чи це гарна ідея чи ні: Після успішної спроби всіх інших рішень я просто перейменував / usr / local / lib / dtrace, зв'язав вузол і знову перейменував каталог. Після цього вузол працював, як очікувалося.


0

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

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

npm uninstall npm -g
brew uninstall node
brew install node

У мене все ще виникали деякі проблеми і виникали помилки, коли я намагався зв’язати файли вузлів

Нарешті я спробував це

brew link --overwrite node

Це, здавалося, це виправило. (він перезаписує всі конфліктуючі файли, а також посилає вузол і npm)

Сподіваюся, це допомагає


0

Я повністю видалив заварку і почав знову, тільки щоб знову знайти ту саму проблему.

Здається, що Brew працює, поєднуючи потрібні бінарні файли у вашій системі, де інші методи установки зазвичай копіюють файли.

Тут я знайшов наявний набір бібліотек вузлів:

/usr/local/include/node

Після декількох подряпин по голові я згадав про встановлення вузла на дату проти цієї старої версії, і це не було через заварку.

Я вручну видалив всю цю папку і успішно пов’язав npm.

Це пояснило б, чому використання самогону для видалення або навіть видалення заварки не мало ефекту.

Відповідь найвищого рейтингу ставить це дуже просто, але я подумав, що я додам свої спостереження щодо того, чому це потрібно.

Я здогадуюсь, що купа проблем з іншими пакетами для пивоваріння може бути спричинена тим, що старі нежирні екземпляри пакунків перешкоджають.


0

Мені було зруйнувати мою голову на символічному вузлі .. і, здавалося, нічого не працює ... але, нарешті, те, що працювало, - це встановлення правильних дозволів. Цей "sudo chown -R $ (whoami) / usr / local" зробив роботу для мене.


0

Я зафіксував це в Ель-Капітан, використовуючи наступну команду. Чесно кажучи, не маю уявлення, що це робить, але я подумав, що поділюсь, оскільки вирішив свою проблему.

brew link --overwrite node

-5

Вам потрібно видалити пакет npm вручну.

перший вузол відключення: brew link -n node

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

знову посилання: brew link node

буде нове посилання на нове місце npm


5
Чи це не знімає НОВІ npm, які намагається встановити заварка? Після цього у мене не встановлено робочого npm, тоді як видалення папки OLD npm, як у моїй відповіді, працює.
natevw

мені здається, ви також намагаєтесь видалити новий пакет - тоді як, безумовно, цей старий потрібен для видалення? Я фактично виявив, що для / usr / local / bin / npm залишилось символьне посилання
Caroline
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.