Error: el paso 'enlace de preparación' no se completó correctamente

158

Estoy tratando de instalar node.js a través de Homebrew. Lamentablemente, recibo este error:

  ~  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

Entonces trato de vincular el nodo manualmente ...

  ~  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

No tuve suerte, así que trato de vincular con fuerza el nodo ...

  ~  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

No estoy familiarizado con dtrace en ningún aspecto y tengo miedo de meterme con los permisos, así que intenté 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.

He intentado desinstalar el nodo a través brew uninstall nodey volver a intentar la instalación sin suerte.

chandlervdw
fuente
No puedo obtener automake. mongodb y nodo para vincular con homebrew
pixel 67

Respuestas:

136

El paquete homebrew para node.js ahora incluye npm nuevamente, así que esto me sucedió cuando perdí el mensaje del paquete homebrew acerca de eliminar primero la versión independiente.

Asumiendo, como yo, que ya ha roto el nodo / npm al intentar la actualización antes de saberlo npm uninstall npm -gprimero, puede rm -rf /usr/local/lib/node_modules/npmy luego brew link node. Esto elimina el paquete npm autohospedado independiente (en lugar del que le gustaría instalar) y permite crear un enlace simbólico de su paquete de Cellar.

natevw
fuente
9
Después de eliminar npm, debe cerrar y volver a abrir su terminal para eliminarlo de su ruta para que el enlace funcione correctamente, como @dain mencionó en su comentario.
kflorence
Esto funcionó para mí. En mi caso, no pude vincular Elixir y Erlang durante una actualización. Los directorios de interés no eran propiedad de mi nombre de usuario, sino de "root". Decidí eliminar esos directorios y reinstalar.
Entrenador Roebuck
cuando intento el nodo de enlace obtengo: * Error: No existe ese barril: / usr / local / Cellar / node * | ¿algunas ideas?
SuperUberDuper
1
Después de intentar actualizar npm, pasé una hora tratando de resolver esto. Brew no me dejó vincular hasta que la versión independiente se eliminó primero. Las recomendaciones de Nate me funcionaron.
Brandon Clapp
¿Cómo reinstalo npm? ¿O se instala con brew install node?
marciokoko
153

Ejecuto Mac OS X Mavericks. Intenté instalar el nodo 0.10.25 y la respuesta principal no funcionó para mí.

natevw dice que rm -rf /usr/local/lib/node_modules/npmpero si los permisos se /usr/local/lib/node_modulesven así:

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

entonces brew no podrá crear su enlace simbólico npm en ese directorio. Aquí está mi solución:

Paso 1: Actualiza Homebrew

$ brew update

Paso 2: elimine el nodo / npm en todas partes de su sistema

Algunos de estos comandos no son necesarios dependiendo de cómo instaló node / npm en el pasado.

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

Nota: Tenía archivos de nodo perdido que encontré al ejecutar brew -v link node(lo que me dio el resultado detallado de los errores de vinculación sobre los que se quejaba brew). Es posible que necesite:

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

Paso 3: abra una nueva terminal e instale el nodo

$ brew install node
franksort
fuente
1
¡Gracias! Esto me ayudó mucho y solucionó mi problema. +1
Ricky Mutschlechner
55
Funcionó para mí ... aunque tuve que eliminar el directorio node_modules (que termina en 's') ...
songololo
1
Esto debería convertirse en la respuesta aceptada. Relevante para Yosemite también.
Rog
1
Esto también funcionó para mí, sin embargo, tuve que ejecutar este comando chown para finalmente permitir el enlace. sudo chown -R whoami/ usr / local Sauce
straubcreative
1
Para eliminar el nodo en todas partes de tu Mac, seguí este artículo: stackabuse.com/how-to-uninstall-node-js-from-mac-osx
ankitkpd
40
sudo chown -R $(whoami) /usr/local 

funcionaría bien como se menciona en la solución de problemas del sitio de preparación

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

Talal
fuente
3
Me sorprende que recomienden esto. ¿No sería mejor hacerlo: sudo chmod -R g+w /usr/local(aunque honestamente, ambos me asustan)
getWeberForStackExchange
@getWeberForStackExchange Intenté lo que dijiste, pero no marcó la diferencia para mí. ¿Alguna idea de por qué podría ser?
f1lt3r el
@AlistairMacDonald Probablemente ya haya solucionado esto, pero probablemente necesite más información para saber por qué estaba teniendo problemas. Se supone que cambiar la propiedad de todo en / usr / local permitirá al usuario actual crear los enlaces de nodo en la estructura / usr / local. Estaba proponiendo simplemente cambiar los permisos de grupo de cada archivo en lugar de la propiedad, lo cual es un poco menos loco. Mi comando asumió que su usuario es parte del grupo que posee todo / usr / local. También es posible que haya diferentes grupos en / usr / local, lo que requeriría un chgrpcomando.
getWeberForStackExchange
Instalé home-brew en OS X 10.11 específicamente para obtener el comandante de medianoche y wget. No tengo npm instalado. El paso "brew link" falló como se describe en la pregunta durante la instalación de mc. Esta respuesta funcionó para mí; Hice el cambio, volví a ejecutar el enlace con "brew link midnight-commander", que luego funcionó bien. Después de eso, al escribir "mc" en la línea de comando apareció el comandante de medianoche como se esperaba. Después de eso, "brew install wget" funcionó sin fanfarria. Gran respuesta.
fyngyrz
este comando es recomendado por brew doctor, pero prefiero sudo su, ejecutar los comandos y luego cerrar el terminal
jchnxu
37

Probablemente ya haya instalado una versión anterior de node.js utilizando un método diferente, por lo que debe eliminar manualmente los archivos que se interponen en su camino.

Haga brew link -n nodey elimine manualmente esos archivos y directorios en conflicto, luego intente brew link nodenuevamente.

Trevor Dixon
fuente
44
Tomó algo de tiempo, pero justo lo que necesitaba hacer. Gracias :)
Christoffer
Tengo el mismo problema aspell. ¿Cómo encuentro los archivos y directorios en conflicto?
LWZ
33

Llegué un poco tarde, lo que funcionó para mí fue esto:

* 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

Todo fue exitoso después de esta secuencia

Será
fuente
Esto finalmente funcionó para mí. Estaba teniendo problemas después de que intenté instalar el nodo a través de brew después de haber instalado npm. Básicamente rompió npm para mí. Tuve que rm -rf la carpeta npm y luego instalar a través de brew (la desinstalación npm ya no funcionó para mí). Después de eso, el resto de los pasos funcionaron perfectamente.
rdrobinson3
55
sudo chmod 777Esta nunca es la solución correcta, si tiene problemas de permisos, investigue por qué están ocurriendo y establezca el nivel mínimo de permisos necesarios para hacer el trabajo. Este comando permitirá que cualquier persona del sistema modifique el archivo.
bobmagoo
Brillante. Gracias. Aunque no tuve problemas de permisos ejecutándose brew link nodepor primera vez.
Bede Constantinides
En lugar de chmod ese directorio, simplemente tomé posesión de él. chown myuser -R -v / usr / local / lib / dtrace / También tuve el problema de que dtrace no existía como directorio. El error fue el mismo, pero no había ningún directorio presente.
Jason Short
15

Prueba esto. Obtuve de otra referencia y trabajó para mí.

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
fuente
brew postinstall nodefue el boleto
prototipo el
Este fue el boleto! Por alguna razón, tuve que ejecutar brew upgrade 2X y la segunda vez me pidió que instalara una actualización a XCode. Entre brew link --overwrite nodey el comando final, todo parece funcionar. El comando final que sugirió no funciona debido a 'sudo. En cambio, usebrew postinstall node
Dani Amsalem
10

Tuve el mismo problema después de transferir todas mis aplicaciones de mi Mac anterior a la nueva.

Encontré la solución ejecutando brew doctor:

Advertencia: se encontraron enlaces simbólicos rotos. Eliminarlos conbrew prune

Después de correr brew prune, Homebrew finalmente vuelve a la normalidad :)

Kévin LR
fuente
4

Mi problema tenía una solución ligeramente diferente. El directorio en el que brew quería crear los enlaces simbólicos no era propiedad del usuario actual.

ls -la /usr/local/bin/lib/node | grep node cedió:

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

Para mí, lo siguiente lo arregló:

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

PD. $(users)se ampliará a su nombre de usuario, se esforzó un poco para ayudar a pegar copias pegadas;)

suweller
fuente
2
Tuve el mismo problema. Aparentemente, esto puede ocurrir si ejecuta "make install" para alguna otra aplicación manualmente. Recientemente había hecho exactamente eso y la solución era hacerme un traje como tú.
Richard Tuttle
4

gracias @suweller.

Arregle el problema:

  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

Tuve el mismo problema 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

Así que arreglé este problema:

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

Después de solucionar este problema, recibí otro:

  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

Entonces eliminé node.d por:

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

tengo otro error de permiso:

  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.

y lo arregló:

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

y finalmente todo funcionó:

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

La mayoría de los problemas de instalación de brew con el nodo son causados ​​por errores de permisos o por haber instalado el nodo previamente y luego intentar instalarlo a través de brew. La solución que finalmente funcionó para mí fue:

ADVERTENCIA: Esto desinstalará el uso de nodejs (varias versiones) con precaución:

  1. Eliminar nodo a través de brew:

    brew desinstalar nodo

  2. También lo hizo a través de la fuerza:

    brew desinstalar nodo --force

  3. Para usar el script Fuente: Eliminar nodo :

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

Luego:

chmod +x /path/to/terminatenode.sh

Luego:

./terminatenode.sh .
  1. Luego, asegúrese de hacer el siguiente comando:

    chown $ USER / usr / local

  2. Luego haga una actualización de preparación (siga haciendo esto hasta que se actualicen todas las cosas):

    actualización de preparación

  3. Haga una preparación limpia y ejecute la actualización nuevamente (puede ser redundante) y ejecute el doctor para asegurarse de que las cosas estén en su lugar:

    preparación de cerveza; actualización de cerveza; preparar cerveza

  4. Y finalmente instale el nodo a través de brew (detallado):

    brew install -v node

AhsenB
fuente
Los números no tienen el formato correcto ... pero los pasos están ahí. Corregirá el problema de formato mañana.
AhsenB
2

la respuesta final: cambie el propietario de ese directorio a quien quiera que sea

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

lo cual también es recomendado por brew si ejecuta brew doctor

Bobo
fuente
2

Recibí un error durante la instalación que no puede vincular el nodo y / usr / local / include no se puede escribir

La siguiente solución funcionó para mí: - Primero cree la carpeta de inclusión, tenga en cuenta que esto requiere privilegios de sudo

cd /usr/local

sudo mkdir include

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

brew link node
Pukhraj soni
fuente
1

También me las arreglé para estropear mi NPM y los paquetes instalados entre estas versiones de Homebrew y no importaba cuántas veces desvinculaba / vinculaba y desinstalaba / instalaba el nodo, todavía no funcionaba.

Como resultado, debe eliminar NPM de la ruta; de lo contrario, Homebrew no lo instalará: https://github.com/mxcl/homebrew/blob/master/Library/Formula/node.rb#L117

Espero que esto ayude a alguien con el mismo problema y ahorre esa hora más o menos que tuve que pasar buscando el problema ...

dain
fuente
Gracias. Tuve que hacer esto en combinación con la respuesta más votada para que funcione correctamente.
kflorence
1

por el buscador, elimine este archivo:

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

en terminal:

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

luego:

$ brew link node
monimen
fuente
1
Cuando corro brew link --overwrite --dry-run node, veo el error No such keg: /usr/local/Cellar/node. ¿Qué me estoy perdiendo?
PKHunter
1

He probado todos los métodos y ninguno de ellos funciona. La forma más fácil es reinstalar el nodo desde https://nodejs.org/en/download/

Simplemente descargue pkge instálelo. Ahora tengo un trabajo npmy nodeotra vez.

Cazador
fuente
0

No sé, si es una buena idea o no: después de probar todas las demás soluciones sin éxito, simplemente cambié el nombre de / usr / local / lib / dtrace, nodo vinculado y cambié el nombre del directorio nuevamente. Después de eso, el nodo funcionó como se esperaba.

Alex Maiburg
fuente
0

Estuve luchando con esto por un tiempo. (para mí "npm uninstall npm -g" no hizo nada)

Probé un montón de cosas:

npm uninstall npm -g
brew uninstall node
brew install node

Todavía tenía algunos problemas y recibía errores cuando intentaba vincular los archivos de nodo

Finalmente probé esto

brew link --overwrite node

Eso parecía haberlo solucionado. (sobrescribe todos los archivos en conflicto y también enlaza nodo y npm)

Espero que esto ayude

Tanuj
fuente
0

Desinstalé completamente brew y comencé de nuevo, solo para encontrar el mismo problema nuevamente.

Brew parece funcionar al simular los binarios requeridos en su sistema donde otros métodos de instalación típicamente copiarían los archivos.

Encontré un conjunto existente de bibliotecas de nodos aquí:

/usr/local/include/node

Después de rascarme la cabeza, recordé haber instalado el nodo en la fecha de esta versión anterior y no había sido a través de brew.

Eliminé manualmente toda esta carpeta y vinculé con éxito npm.

Esto explicaría por qué el uso de Brew Desinstalar o incluso desinstalar Brew no tuvo ningún efecto.

La respuesta mejor clasificada lo expresa de manera muy simple, pero pensé en agregar mis observaciones sobre por qué es necesario.

Supongo que un montón de problemas con otros paquetes de cerveza pueden ser causados ​​por antiguas instancias de paquetes que no están en camino.

Enrique
fuente
0

Había estado arruinando mi cabeza en el nodo symlinking ... y nada parecía funcionar ... pero finalmente lo que funcionó fue establecer los permisos correctos. Este 'sudo chown -R $ (whoami) / usr / local' hizo el trabajo por mí.

Shahsayyad
fuente
0

Arreglé esto en El Capitán usando el siguiente comando. Honestamente, no tengo idea de lo que hace, pero pensé en compartirlo ya que solucionó mi problema.

brew link --overwrite node
Fizzix
fuente
-5

Debe eliminar el paquete npm manualmente.

primer nodo de desvinculación: brew link -n node

eliminar la carpeta npm: rm -R /usr/local/Cellar/node/0.8.10/lib/node_modules/npm

enlace de nuevo: brew link node

habrá un enlace suave a la nueva ubicación de npm

soenke
fuente
55
¿No elimina esto el NUEVO npm que Brew está tratando de instalar? Después de esto me dejó sin un npm funcionando instalado, mientras que eliminar la carpeta npm OLD como en mi respuesta funciona.
natevw
me parece que también estás tratando de eliminar el nuevo paquete, mientras que seguramente es el antiguo el que necesita eliminarse. De hecho, descubrí que quedaba un enlace simbólico para / usr / local / bin / npm
Caroline