¿Hay una manera rápida de volver a vincular mis barriles de homebrew?

58

Acabo de actualizar mi MacBook Air a Mavericks. El proceso parece haber eliminado casi todos los enlaces simbólicos que homebrew puso en /usr/local/bin . Cuando me doy cuenta de que faltan cosas, las vuelvo a vincular a través de brew unlink <keg> && brew link <keg> (aunque los enlaces simbólicos han desaparecido, homebrew todavía cree que están ahí, así que primero necesito unlink ). Esto se siente algo ineficiente.

Podría simplemente recorrer todo en /usr/local/Cellar pero no cada barril se vincula automáticamente y no quiero vincularlos. Así que mi siguiente conjetura es enumerar todos los barriles vinculados y volver a vincularlos (utilizando lo anterior).

¿Hay algún comando mágico que encuentre todos los barriles que homebrew piensa están vinculados para que pueda volver a vincularlos?

    
pregunta Loop Space 11.03.2014 - 09:03

3 respuestas

37

/usr/local/Library/LinkedKegs parece contener una lista de, bueno, barriles vinculados, así que esto debería hacer el truco:

ls -1 /usr/local/Library/LinkedKegs | while read line; do
    echo $line
    brew unlink $line
    brew link --force $line
done

Recomendaría asegurarse de que tienes permisos de escritura para /usr/local/lib nuevamente antes de intentar esto.

    
respondido por el mike__t 23.03.2014 - 21:39
55

Este comando de bash (tomado de allí ) se desvinculará Todas las fórmulas instaladas y luego vincularlas de nuevo:

brew list -1 | while read line; do brew unlink $line; brew link $line; done

Supongo que todas las fórmulas deben estar vinculadas, de lo contrario, la herramienta que dependa de ellas no podrá encontrarlas.

    
respondido por el nuc 11.03.2014 - 20:51
8

Además de las otras respuestas a esta pregunta, es posible que también deba volver a vincular la fórmula con varias versiones instaladas ( brew link no lo hará por usted).

Primero, vuelve a vincular todas las fórmulas que puedas:

brew list -1 | while read line; do brew unlink $line; brew link --force $line; done

Luego ejecute brew doctor , que debe quejarse y darle dos listas:

  • Fórmulas no vinculadas con múltiples versiones
  • Fórmulas solo para barriles que se han vinculado incorrectamente por el proceso original de reconexión.

Para cada fórmula con varias versiones, ejecute lo siguiente, sustituyendo "python" con el nombre de la fórmula:

brew info python  

Esto le mostrará, entre otra información, todas las versiones instaladas. Elige qué versión quieres vincular (para mí es 2.7.6) y usa brew switch

brew switch python 2.7.6

También querrá ejecutar brew unlink en la lista (si hay alguna) de fórmulas solo para barriles que se han vinculado.

    
respondido por el Scott Ritchie 28.04.2014 - 11:03

Lea otras preguntas en las etiquetas