Erreur: l'étape "lien de brassage" n'a pas abouti

158

J'essaye d'installer node.js via Homebrew. Malheureusement, j'obtiens cette erreur:

  ~  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

Alors j'essaye de lier le nœud manuellement ...

  ~  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

Pas de chance, alors j'essaye de lier de force le nœud ...

  ~  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

Je ne suis pas familier avec dtrace à aucun égard et j'ai peur de jouer avec les autorisations, alors j'ai essayé de 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.

J'ai essayé de désinstaller le nœud via brew uninstall nodeet de réessayer l'installation sans succès.

chandlervdw
la source
Je ne peux pas avoir d'automake. mongodb et node à lier avec homebrew
pixel 67

Réponses:

136

Le package homebrew pour node.js inclut à nouveau npm, donc cela m'est arrivé lorsque j'ai manqué le message du package homebrew sur la suppression de la version autonome en premier.

En supposant, comme moi, que vous avez déjà cassé le nœud / npm en essayant la mise à niveau avant de savoir d' npm uninstall npm -gabord, vous pouvez rm -rf /usr/local/lib/node_modules/npmet ensuite brew link node. Cela supprime le package npm auto-hébergé autonome (plutôt que celui que Brew voudrait installer) et permet à Brew de créer un lien symbolique avec le package fourni depuis Cellar.

natevw
la source
9
Après avoir supprimé npm, vous devez fermer et rouvrir votre terminal pour le supprimer de votre chemin afin que la liaison fonctionne correctement, comme @dain l'a mentionné dans son commentaire.
kflorence
Cela a fonctionné pour moi. Dans mon cas, je n'ai pas pu associer Elixir et Erlang lors d'une mise à niveau. Les répertoires concernés n'appartiennent pas à mon nom d'utilisateur, mais appartiennent à "root". J'ai décidé de supprimer ces répertoires et de les réinstaller.
Coach Roebuck
quand j'essaye le nœud de lien, j'obtiens: * Erreur: Pas de tel keg: / usr / local / Cellar / node * | des idées?
SuperUberDuper
1
Après avoir essayé de mettre à niveau npm, j'ai passé une heure à essayer de comprendre cela. Brew ne m'a pas laissé le lien tant que la version autonome n'a pas été supprimée. Les recommandations de nate ont fonctionné pour moi.
Brandon Clapp
Comment réinstaller npm? Ou est-il installé avec le nœud d'installation de brew?
marciokoko
153

Je lance Mac OS X Mavericks. J'ai essayé d'installer le nœud 0.10.25 et la réponse du haut n'a pas fonctionné pour moi.

natevw dit à rm -rf /usr/local/lib/node_modules/npmmais si les autorisations sur /usr/local/lib/node_modulesressemblent à ceci:

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

alors brew ne pourra pas créer son lien symbolique npm dans ce répertoire. Voici ma solution:

Étape 1: Mettez à jour Homebrew

$ brew update

Étape 2: Supprimez le nœud / npm partout sur votre système

Certaines de ces commandes ne sont pas nécessaires selon la façon dont vous avez installé node / npm dans le passé.

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

Remarque: j'avais des fichiers de nœuds errants que j'ai trouvés en exécutant brew -v link node(ce qui m'a donné le résultat détaillé des erreurs de liaison dont se plaignait brew). Vous devrez peut-être:

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

Étape 3: Ouvrez un nouveau terminal et installez le nœud

$ brew install node
Franksort
la source
1
Merci! Cela m'a beaucoup aidé et a résolu mon problème. +1
Ricky Mutschlechner
5
A travaillé pour moi ... même si j'ai dû supprimer le répertoire node_modules (se terminant par 's') ...
songololo
1
Cela devrait devenir la réponse acceptée. Pertinent aussi pour Yosemite.
Rog
1
Cela a fonctionné pour moi aussi, mais j'ai dû exécuter cette commande chown pour enfin autoriser le lien. sudo chown -R whoami/ usr / local Sauce
straubcreative
1
Pour supprimer le nœud partout sur votre mac, j'ai suivi cet article: stackabuse.com/how-to-uninstall-node-js-from-mac-osx
ankitkpd
40
sudo chown -R $(whoami) /usr/local 

ferait très bien comme mentionné dans le dépannage du site de brassage

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

Talal
la source
3
Je suis surpris qu'ils recommandent cela. Ne serait-il pas préférable de faire: sudo chmod -R g+w /usr/local(bien qu'honnêtement, les deux me font peur)
getWeberForStackExchange
@getWeberForStackExchange J'ai essayé ce que vous avez dit mais cela n'a pas fait de différence pour moi. Des idées pourquoi cela pourrait être?
f1lt3r
@AlistairMacDonald Vous avez probablement déjà résolu le problème, mais j'aurais probablement besoin de plus d'informations pour comprendre pourquoi vous aviez des problèmes. Changer la propriété de tout ce qui se trouve dans / usr / local est censé permettre à l'utilisateur actuel de créer les liens de nœuds dans la structure / usr / local. Je proposais simplement de changer les permissions de groupe de chaque fichier au lieu de la propriété, ce qui est un peu moins fou. Ma commande a supposé que votre utilisateur faisait partie du groupe qui possède tout / usr / local. Il est également possible qu'il existe différents groupes dans / usr / local, ce qui nécessiterait une chgrpcommande.
getWeberForStackExchange
J'ai installé home-brew sous OS X 10.11 spécifiquement pour obtenir Midnight Commander et wget. Je n'ai pas installé npm. L'étape "lien de brassage" a échoué comme décrit dans la question lors de l'installation de mc. Cette réponse a fonctionné pour moi; J'ai fait le changement, relancé le lien avec "brew link midnight-commander", qui a ensuite bien fonctionné. Après cela, taper «mc» sur la ligne de commande a fait apparaître le commandant de minuit comme prévu. Après cela, "brew install wget" a fonctionné sans fanfare. Très bonne réponse.
fyngyrz
cette commande est recommandée par brew doctor, mais je préfère sudo su, exécuter les commandes puis fermer le terminal
jchnxu
37

Vous avez probablement déjà installé une ancienne version de node.js en utilisant une méthode différente, vous devez donc supprimer manuellement les fichiers qui gênent brew.

Ne brew link -n nodeet supprimer manuellement les fichiers et les répertoires contradictoires, essayez à brew link nodenouveau.

Trevor Dixon
la source
4
Cela a pris du temps, mais exactement ce que j'avais à faire. Merci :)
Christoffer
J'ai le même problème avec aspell. Comment trouver les fichiers et répertoires en conflit?
LWZ
33

Je suis un peu en retard, ce qui a fonctionné pour moi était ceci:

* 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

Tout a réussi après cette séquence

Volonté
la source
Cela a finalement fonctionné pour moi. J'avais des problèmes après avoir essayé d'installer node via brew après avoir déjà installé npm. Cela a essentiellement cassé npm pour moi. J'ai dû rm -rf le dossier npm puis installer via brew (la désinstallation de npm ne fonctionnait plus pour moi). Après cela, le reste des étapes a parfaitement fonctionné.
rdrobinson3
5
sudo chmod 777Ce n'est jamais la bonne solution, si vous rencontrez des problèmes d'autorisations, recherchez pourquoi ils se produisent et définissez le niveau minimum d'autorisations requis pour effectuer le travail. Cette commande permettra au fichier d'être modifié par n'importe qui sur le système.
bobmagoo
Brillant. Je vous remercie. Bien que je n'ai eu aucun problème de permanente en cours brew link noded' exécution pour la première fois.
Bede Constantinides
Plutôt que de chmod ce répertoire, je m'en suis juste approprié. chown myuser -R -v / usr / local / lib / dtrace / J'ai également eu le problème que dtrace n'existait pas en tant que répertoire. L'erreur était la même, mais aucun répertoire n'était présent.
Jason Short le
15

Essaye ça. Obtenu d'une autre référence et a travaillé pour moi.

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
Randula
la source
brew postinstall nodeétait le billet
prototype
C'était le ticket! Pour une raison quelconque, j'ai dû exécuter la mise à niveau de brassage 2X et la deuxième fois, il m'a demandé d'installer une mise à jour de XCode. Entre brew link --overwrite nodeet la commande finale, tout semble fonctionner. La dernière commande que vous avez suggérée ne fonctionne pas à cause de 'sudo. À la place, utilisezbrew postinstall node
Dani Amsalem
10

J'ai eu le même problème après avoir transféré toutes mes applications de mon ancien Mac vers mon nouveau.

J'ai trouvé la solution en exécutant brew doctor:

Avertissement: des liens symboliques rompus ont été trouvés. Retirez-les avecbrew prune

Après avoir couru brew prune, Homebrew est enfin de retour sur les rails :)

Kévin LR
la source
4

Mon problème avait une solution légèrement différente. Le répertoire dans lequel brew voulait créer les liens symboliques n'appartenait pas à l'utilisateur actuel.

ls -la /usr/local/bin/lib/node | grep node a abouti:

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

Pour moi, ce qui suit l'a corrigé:

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

ps. $(users)sera étendu à votre nom d'utilisateur, a fait un peu de mal pour aider les copieurs paresseux;)

sous-traitant
la source
2
J'ai eu le même problème. Cela peut apparemment se produire si vous exécutez manuellement "make install" pour une autre application. J'avais récemment fait exactement cela et la solution était de chown comme vous l'avez fait.
Richard Tuttle
4

merci @suweller.

J'ai résolu le problème:

  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

J'ai eu le même problème que suweller:

  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

j'ai donc résolu ce problème en:

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

après avoir résolu ce problème, j'en ai un autre:

  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

J'ai donc supprimé node.d par:

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

obtenu une autre erreur d'autorisation:

  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.

et corrigé:

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

et enfin tout a fonctionné:

  bin git:(master)  brew link node
Linking /usr/local/Cellar/node/0.10.25... 1225 symlinks created
zero3nna
la source
3

La plupart des problèmes d'installation de brew avec le nœud sont causés par des erreurs d'autorisation ou par le fait que le nœud est déjà installé et que vous essayez de l'installer via brew. La solution qui a finalement fonctionné pour moi était:

AVERTISSEMENT: Cela désinstallera nodejs (plusieurs versions) à utiliser avec prudence:

  1. Supprimer le nœud via infusion:

    nœud de désinstallation de brassage

  2. aussi fait par la force:

    noeud de désinstallation de brassage --force

  3. Pour utiliser la source du script: Supprimer le nœud :

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

Ensuite:

chmod +x /path/to/terminatenode.sh

Ensuite:

./terminatenode.sh .
  1. Assurez-vous ensuite de faire la commande suivante:

    chown $ USER / usr / local

  2. Ensuite, faites une mise à jour (continuez à faire cela jusqu'à ce que tout soit mis à jour):

    mise à jour de la bière

  3. Nettoyez l'infusion et exécutez à nouveau la mise à jour (peut être redondante) et exécutez le médecin pour vous assurer que les choses sont en place:

    nettoyage de l'infusion; mise à jour de la bière; docteur en brasserie

  4. Et enfin, installez node via brew (verbose):

    brew install -v nœud

AhsenB
la source
Les nombres ne se formatent pas correctement ... mais les étapes sont là. Corrigera le problème de formatage demain.
AhsenB
2

la réponse ultime: changez le propriétaire de ce répertoire en celui que vous êtes

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

qui est également recommandé par brew si vous exécutez brew doctor

Bobo
la source
2

J'obtenais une erreur lors de l'installation qui ne pouvait pas lier le nœud et / usr / local / include n'est pas inscriptible

La solution ci-dessous a fonctionné pour moi: - Créez d'abord le dossier d'inclusion, notez que cela nécessite des privilèges sudo

cd /usr/local

sudo mkdir include

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

brew link node
Pukhraj soni
la source
1

J'ai également réussi à gâcher mon NPM et les packages installés entre ces versions Homebrew et peu importe combien de fois j'ai dissocié / lié et désinstallé / installé le nœud, cela ne fonctionnait toujours pas.

Il s'avère que vous devez supprimer NPM du chemin, sinon Homebrew ne l'installera pas: https://github.com/mxcl/homebrew/blob/master/Library/Formula/node.rb#L117

J'espère que cela aidera quelqu'un avec le même problème et sauvera cette heure environ que j'ai dû passer à la recherche du problème ...

dain
la source
Je vous remercie. J'ai dû faire cela en combinaison avec la réponse la plus élevée pour que cela fonctionne correctement.
kflorence
1

par le Finder, supprimez ce fichier:

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

dans le terminal:

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

puis:

$ brew link node
monimen
la source
1
Quand je cours brew link --overwrite --dry-run node, je vois l'erreur No such keg: /usr/local/Cellar/node. Qu'est-ce que je rate?
PKHunter
1

J'ai essayé toutes les méthodes et aucune d'elles ne fonctionne. Le moyen le plus simple est de réinstaller le nœud à partir de https://nodejs.org/en/download/

Téléchargez simplement pkget installez-le. Maintenant, j'ai un travail npmet nodeencore.

chasseur
la source
0

Je ne sais pas, si c'est une bonne idée ou non: après avoir essayé toutes les autres solutions sans succès, j'ai simplement renommé / usr / local / lib / dtrace, lié le nœud et renommé à nouveau le répertoire. Après cela, le nœud a fonctionné comme prévu.

Alex Maiburg
la source
0

J'avais du mal avec ça pendant un moment. (pour moi, "npm uninstall npm -g" n'a rien fait)

J'ai essayé un tas de choses:

npm uninstall npm -g
brew uninstall node
brew install node

J'avais encore des problèmes et recevais des erreurs lorsque j'ai essayé de lier les fichiers de nœud

Enfin j'ai essayé ceci

brew link --overwrite node

Cela semblait l'avoir réglé. (il écrase tous les fichiers en conflit et lie également node et npm)

J'espère que cela t'aides

Tanuj
la source
0

J'ai complètement désinstallé Brew et j'ai recommencé, pour retrouver le même problème.

Brew semble fonctionner en liant symboliquement les binaires requis dans votre système où d'autres méthodes d'installation copieraient généralement les fichiers.

J'ai trouvé un ensemble existant de bibliothèques de nœuds ici:

/usr/local/include/node

Après quelques égratignures, je me suis souvenu d'avoir installé node à la date contre cette ancienne version et cela ne s'était pas fait via brew.

J'ai supprimé manuellement ce dossier entier et lié avec succès npm.

Cela expliquerait pourquoi l'utilisation de la désinstallation d'infusion ou même de la désinstallation de l'infusion elle-même n'avait aucun effet.

La réponse la mieux classée le met très simplement, mais j'ai pensé ajouter mes observations sur la raison pour laquelle c'est nécessaire.

Je suppose que de nombreux problèmes avec d'autres packages de brassage pourraient être causés par d'anciennes instances de packages non-brassées.

Henri
la source
0

J'avais détruit ma tête sur le nœud symlinking .. et rien ne semblait fonctionner ... mais finalement ce qui a fonctionné est de définir les bonnes autorisations. Ce 'sudo chown -R $ (whoami) / usr / local' a fait le travail pour moi.

Shahsayyad
la source
0

J'ai corrigé cela dans El Capitan en utilisant la commande suivante. Honnêtement, aucune idée de ce qu'il fait, mais je pensais que je partagerais car cela a résolu mon problème.

brew link --overwrite node
Fizzix
la source
-5

Vous devez supprimer le package npm manuellement.

premier nœud de dissociation: brew link -n node

supprimer le dossier npm: rm -R /usr/local/Cellar/node/0.8.10/lib/node_modules/npm

lien à nouveau: brew link node

il y aura un lien logiciel vers le nouvel emplacement de npm

soenke
la source
5
Cela ne supprime-t-il pas le NOUVEAU npm que Brew essaie d'installer? Suite à cela, je n'ai pas installé de npm fonctionnel, alors que la suppression de l'ancien dossier npm comme dans ma réponse fonctionne.
natevw
il me semble que vous essayez également de supprimer le nouveau paquet - alors que c'est sûrement l'ancien qui doit être supprimé? En fait, j'ai trouvé qu'il restait un lien symbolique pour / usr / local / bin / npm
Caroline