Gibt es eine schnelle Möglichkeit, meine Homebrew-Fässer neu zu beladen?

61

Ich habe gerade mein MacBook Air auf Mavericks aktualisiert. Der Prozess scheint zu haben fast alle des Symlinks entfernt , die homebrewin setzen /usr/local/bin. Wenn ich bemerke, dass Dinge fehlen, verlinke ich sie erneut über brew unlink <keg> && brew link <keg>(obwohl die Symlinks verschwunden sind, homebrewdenke ich immer noch, dass sie da sind, also muss ich unlinkzuerst). Das fühlt sich etwas ineffizient an.

Ich könnte einfach alles durchlaufen, /usr/local/Cellaraber nicht jedes Fass wird automatisch verlinkt und ich möchte diese nicht verlinken. Also ist meine nächste Vermutung, jedes verknüpfte Fass aufzulisten und erneut zu verknüpfen (unter Verwendung der obigen).

Gibt es einen magischen Befehl, der alle Kegs finden , die homebrew denkt , dass verbunden ist , so dass ich sie neu verknüpfen kann?

Loop Space
quelle
Ich habe den Migrationsassistenten verwendet, um "alles" von einem alten Mac auf einen neuen zu verschieben, und ich habe auch alle meine Homebrew-Symlinks verloren. Nervig.
Grav

Antworten:

39

/usr/local/Library/LinkedKegs Scheint eine Liste von gut verbundenen Fässern zu enthalten, also sollte dies der Trick sein:

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

Ich würde empfehlen, sicherzustellen, dass Sie erneut über Schreibberechtigungen verfügen, /usr/local/libbevor Sie dies versuchen.

mike__t
quelle
Ich bin mir ziemlich sicher, dass dadurch mein Homebrew wieder funktioniert hat. Vielen Dank!
Robert Massaioli
Erstaunlich, danke :) Ich habe gerade eine Zusammenfassung daraus gemacht, wenn es Ihnen nichts ausmacht. Ich bin mir ziemlich sicher, dass wir nicht die einzigen sind, die mit diesem Problem konfrontiert sind. Goo.gl/YTPMjh
Stone Alessandro
1
Nein, tu es nicht --force! brew linksollte ausreichen und einige Fässer sollten wirklich nicht verbunden sein (da sie mit Systembibliotheken in Konflikt geraten können), während --forceihre Verbindung erzwungen wird.
Chris Jefferson
Huh. Sieht so aus, als hätte ich auch gelöscht /usr/local/Library.
Kyle Strand
59

Dieser Bash-Befehl (von dort übernommen ) hebt die Verknüpfung aller installierten Formeln auf und verknüpft sie dann erneut:

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

Ich schätze, alle Formeln müssen verknüpft werden, sonst kann jedes Tool, das von ihnen abhängt, sie nicht finden.

nuc
quelle
Ich bin nicht sicher, ob alle Formeln verknüpft werden müssen. Einige sind nur für Fässer, aber ich weiß nicht, welche, da einige als Abhängigkeiten von anderen installiert wurden.
Loop Space
4
Es scheint, dass Sie nur einige Warnungen wie "Warnung: Extempore ist nur Fass und muss mit --force verknüpft werden"
Grav
2
Hier ist eine äquivalente Version mit xargs:brew list -1 | xargs -I formula sh -c "brew unlink formula && brew link formula"
paulmelnikow
toll zu bedienen. Ich benutze 10.12.6 mac os
Raju yourPepe
8

Zusätzlich zu den anderen Antworten auf diese Frage müssen Sie die Formel möglicherweise mit mehreren installierten Versionen neu verknüpfen (dies brew linkwird nicht für Sie erledigt ).

Verknüpfen Sie zunächst alle Formeln, die Sie können:

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

Dann renne brew doctor, was dich beschweren sollte und gib dir zwei Listen:

  • Nicht verknüpfte Formeln mit mehreren Versionen
  • Nur-Fass-Formeln, die durch den ursprünglichen Neuverknüpfungsprozess falsch verknüpft wurden.

Führen Sie für jede Formel mit mehreren Versionen Folgendes aus und ersetzen Sie "python" durch den Formelnamen:

brew info python  

Hier sehen Sie unter anderem alle installierten Versionen. Wählen Sie die Version, die Sie verlinken möchten (für mich 2.7.6), und verwenden Siebrew switch

brew switch python 2.7.6

Sie sollten auch brew unlinkdie Liste der verknüpften reinen Fassformeln (falls vorhanden) durchlaufen lassen.

Scott Ritchie
quelle