Wie installiere ich alle mit Homebrew installierten Pakete neu?

15

Ich hatte kürzlich ein Problem, bei dem alle meine verknüpften Binärdateien entfernt wurden /usr/local/bin/. Glücklicherweise waren die meisten davon nur dynamische Links zu Binärdateien, die mit Homebrew installiert wurden. Nach der Neuinstallation von Homebrew muss ich sie zurückholen. Gibt es eine Möglichkeit, die Neuinstallation aller installierten Pakete und Binärdateien mit Homebrew zu erzwingen? Vielleicht die Ausgabe von brew listin brew reinstallleiten?

JAL
quelle

Antworten:

39

So einfach ist das:

$ brew list | xargs brew reinstall

Sie müssen nichts deinstallieren, da Sie sonst Ihre Einstellungen und Konfigurationen verlieren können.

Albert Timashev
quelle
Ich musste ein paar Problemformeln entfernen, aber das hat es geschafft. Vielen Dank!
JAL
funktioniert außer für Fässer
New Alexandria
2

Ich empfehle , nicht nur installierte Biere, sondern auch Fässer und Zapfhähne zu behalten

$ brew bundle dump --describe --global
$ brew bundle install --global

Der erste Befehl schreibt, ~/.Brewfileder beim zweiten Aufruf erneut gelesen wird. es sieht aus wie das:

$ cat ~/.Brewfile
tap "buo/cask-upgrade"
tap "homebrew/cask-fonts"
brew "direnv"
brew "python"
cask "0xed"
cask "alacritty"

Stellen Sie bitte

$ brew bundle -h

für weitere Details auf dem bundleBefehl.

Jitter
quelle
1

Nach dem Upgrade auf OSX High Sierra musste ich dies tun. Die meisten Brühverpackungen versagten aufgrund fehlender Dylibs. Am Ende wurde ein schnelles und schmutziges Skript geschrieben, das nacheinander sauber entfernt und ersetzt, wobei Abhängigkeiten ignoriert werden, damit Sie keine Massenbereinigungen erzwingen. Sie müssen jeden Haltepunkt reparieren, aber er setzt dort an, wo er aufgehört hat, damit er nicht zu schmerzhaft ist.

YMMV wie immer

#!/bin/bash -e
if [ "$1" == "-h" ] ; then
    cat <<EOT
    Remove & reinstall all brew owned packages
    Fail on error to allow manual fixing
    Accept package name as arg1 to spec pick up point.
        $0 [<pickup point>]
    eg:
        $0
    or
        $0 ctags
            where <ctags> is the package to start from
EOT
    exit 1
fi

for l in $(brew list) ; do
    if [ "$1" ] ; then
        if [[ $l < $1 ]] ; then
            echo "skipping $l"
            continue
        fi
    fi
    echo "Remove $l"
    brew uninstall --ignore-dependencies $l 
    echo "Re-add $l"
    brew install $l
done
Bruce Edge
quelle
0

Sie können zuerst alle Pakete entfernen und dann alle erneut installieren.

$ brew tap beeftornado/rmtree && brew install brew-rmtree
$ brew rmtree <package>
Donald Wu
quelle
Ich könnte, aber dann müsste ich jeden Paketnamen von manuell eingeben brew list. Ich benötige eine automatisierte Lösung, die automatisch brew listalle Pakete abruft und neu installiert.
JAL
0

Etwas wie

cd /tmp
brew list -1 >brew-list
# do whatever is necessary to remove packages
while read package; do
    brew install $package
done <brew-list

sollte den Trick machen (es sei denn, Sie haben von taps installiert, dann kann es etwas mehr Arbeit erfordern).

nohillside
quelle