"brew link node" crea/elimina una cantidad diferente de enlaces simbólicos cuando se repite

Estaba actualizando Node.js node a través de Homebrew brew upgrade y no se vinculaba correctamente.

$ brew update
(se actualizaron las fórmulas snip-snip)
$ brew upgrade
(snip-snip otras actualizaciones)
==> Nodo de actualización
==> Descargando http://nodejs.org/dist/v0.8.11/node-v0.8.11. tar.gz
############################################ ####################### 100.0%
==> ./configure --prefix=/usr/local/Cellar/node/0.8.11
= => make install
==> Advertencias
Homebrew instaló npm.
Recomendamos anteponer la siguiente ruta a su
variable de entorno PATH para que se recojan los archivos binarios instalados por npm:
/usr/local/share/npm/bin
Advertencia: No se pudo vincular el nodo. Desvinculando...
Error: El brew linkpaso no se completó correctamente
La fórmula está construida, pero no está enlazada a /usr/local
Puede intentarlo de nuevo usando `brew link node'
==> Resumen
/usr/local/Cellar/node/0.8.11: 856 archivos, 13M, construido en 108 segundos
( recortar-recortar otras actualizaciones)

Seguí los pasos recomendados para forzar la vinculación.

$ brew link node
Vinculando /usr/local/Cellar/node/0... Advertencia: No se pudo vincular el nodo. Desvinculando...

Error: no se pudo vincular el archivo: /usr/local/Cellar/node/0.8.11/lib/node_modules/npm/scripts/relocate.sh
Target /usr/local/lib/node_modules/npm/scripts/relocate.sh ya existe . Es posible que deba eliminarlo.
Para forzar el enlace y eliminar este archivo, haz lo siguiente:
brew link -f formula_name

Para enumerar todos los archivos que se eliminarían:
brew link -n formula_name
$ brew link -f node
Linking /usr/local/Cellar/node/0.8.11... 756 symlinks created

Me sorprendió la cantidad de enlaces simbólicos, así que, por curiosidad, intenté vincularlo nuevamente.

$ brew unlink node
Desvinculando /usr/local/Cellar/node/0.8.11... 755 enlaces eliminados
$ brew link node
Vinculando /usr/local/Cellar/node/0.8.11... 352 enlaces simbólicos creados
$ brew link node
Advertencia: Ya vinculado: /usr/local/Cellar/node/0.8.11
$ which node
/usr/local/bin/node
$ brew unlink node
Desvincular /usr/local/Cellar/node/0.8.11... 351 enlaces eliminado
$ brew link node
Vinculación /usr/local/Cellar/node/0.8.11... 304 enlaces simbólicos creados
$ brew unlink node
Desvinculación de /usr/local/Cellar/node/0.8.11... 303 enlaces eliminados
$ brew link nodo
Vinculando /usr/local/Cellar/node/0.8.11... 304 enlaces simbólicos creados
$ brew unlink node
Desvinculando /usr/local/Cellar/node/0.8.11... 303 enlaces eliminados

El proceso se estabiliza en 304/303.

  1. ¿Por qué tantos enlaces simbólicos?
  2. ¿Por qué el número de enlace/desenlace cambia de 756 a 303?

Editar: ejecutó el mismo procedimiento de actualización/actualización/enlace/desenlace en la computadora de un colega; en este caso, los enlaces simbólicos pasaron de 775 a 318 a 226, donde se estabilizó. ¿Alguien más tiene números similares? ¿Dependen de otras recetas de preparación instaladas, o tal vez de módulos npm?

¿ Corriste brew doctor? Eso es lo primero que debe hacer en caso de problemas. El culpable parece ser /usr/local/lib/node_modules/npm/scripts/relocate.sh. ¿Podría ser que instaló una versión no casera de Node? En ese caso, el archivo anterior no tendría propiedad de Homebrew y brewse confundiría. Aparentemente hay otros archivos similares.
@Dominique: brew doctorsolo me da advertencias sobre tener Mono (en conflicto pkg-config) instalado. No creas que he tenido otro nodo instalado, pero es posible. Mi colega, que tuvo el mismo problema, puede haber agregado la compilación manual de nodos a un script de configuración de proyecto compartido (está trabajando en Ubuntu y Mac) para obtener la última versión en Ubuntu. Hace tiempo que no veo esta advertencia de vinculación, y el nodo de desvinculación/vinculación 0.8.18 es estable en los enlaces simbólicos 307/307 =)
Para cualquier otra persona que experimente este problema, creo que esta pregunta puede ser útil: No se puede generar un enlace de un barril no vinculado (re: Errores al actualizar el nodo/npm)

Respuestas (1)

¿Tiene varias versiones de Node instaladas a través de homebrew? Cada vez que actualiza node homebrew, coloca la versión más nueva junto con la anterior y luego actualiza los enlaces simbólicos a la versión más nueva. Ejecutar brew cleanupdebería reducir eso un poco para ti.

No sabía nada brew cleanup, gracias! Se eliminaron 7 versiones antiguas de nodos. Sin embargo, repetir desvincular/vincular aún daba el ciclo 303/304, por lo que no hizo ninguna diferencia.
Esos son probablemente el resto de los enlaces simbólicos creados por homebrew para otras aplicaciones. También puede ejecutar el comando 'brew prune' para eliminar todos los enlaces simbólicos muertos.
La ejecución brew prunees silenciosa en mi máquina, por lo que no puedo estar seguro de qué diferencia hizo. Sin embargo, ahora tengo un ciclo 303/303, por lo que es posible que haya afectado un enlace simbólico =)