Überprüfen Sie Brew und Brew-Cask auf gültige Paketnamen

Ich habe einen iMac und ein Macbook für die Arbeit und ein weiteres Set für zu Hause. Am Ende bekomme ich alle paar Jahre ein neues, also muss ich am Ende alles mindestens ein paar Mal im Jahr neu einrichten. Also habe ich ein Skript geschrieben, um so viel wie möglich zu automatisieren: https://github.com/pathikrit/mac-setup-script/blob/master/setup.sh

Das einzige Problem mit dem obigen Skript ist, dass ich keine Möglichkeit habe, vorab zu prüfen, ob ein brewoder ein brew-caskPaket noch gültig ist, zB möchte ich so etwas wie brew check foosicherstellen, dass brew noch etwas über foo weiß. Wie mache ich das?

Schlagen Sie vor, die fehlenden Pakete aufzulisten? Es könnte einfacher sein, einfach die Liste zu durchlaufen und einen Bericht der fehlenden Pakete zu erstellen oder die Fehler zu analysieren, wenn Sie versuchen, etwas zu installieren, das fehlt. Was ist im Grunde das Endszenario für diese "Prüfung", die verwendet wird?
Ich möchte, dass es nur ungültige Paketnamen ausgibt. Ich mache es derzeit mit einem Hack Curl von Github: github.com/pathikrit/mac-setup-script/commit/…
Warum nicht einfach die Installation versuchen und einen Fehler melden, wenn der Rückgabecode nicht 0 ist? Was bringt Ihnen die Vorabbestimmung, was der Versuch der Installation und das Erkennen von Fehlern nicht bringt?
Normalerweise werden Paketnamen veraltet oder umbenannt (z. B. htopumbenannt in htop-osx). Ich würde sie lieber alle reparieren und auf Installieren klicken und es vergessen, anstatt die Fehler am Ende zu beheben und das Skript zu bearbeiten, indem ich die bestandenen auskommentiere und erneut ausführe

Antworten (1)

So erhalten Sie eine Liste mit ungültigen Brührezepten:

#!/usr/bin/env bash
for formula in ${brews[@]}; do
    brew info ${formula} >/dev/null 2>&1 || echo ${formula}
done

So erhalten Sie eine Liste ungültiger Fässer:

#!/usr/bin/env bash
for cask in ${casks[@]}; do
    brew cask info ${cask} >/dev/null 2>&1 || echo ${cask}
done

( brewsund caskssind die in Ihrem Setup-Skript definierten Arrays.)

Dies funktioniert nicht, da info eine Teilstringsuche durchführt. Beispielsweise können Sie einen ungültigen Paketnamen haben, z. B. brew info htopwürde es mit Code 0 beendet werden, aber es funktioniert tatsächlich nicht, wenn Sie versuchen, es zu installieren, da der tatsächliche Paketname lautet htop-osx.
@wrick Nein, brew install htopfunktioniert einwandfrei und installiert htop-osx. Es ist ein Alias ​​definiert für htop: github.com/Homebrew/homebrew/blob/master/Library/Aliases/htop brew info htop funktioniert aufgrund des oben genannten Alias. Wenn Sie brew info htoes versuchen, erhalten Sie eine Fehlermeldung. brew infoführt keine Suche nach Teilzeichenfolgen durch; brew search(Beitrag) tut.