Brew Cask: Ich möchte überprüfen, ob das Paket/die Formel bereits durch Brew oder auf andere Weise installiert ist

Ich versuche, einige Software mit Brew Cask zu installieren, und ich möchte überprüfen, ob das Paket/die Formel bereits durch Brew oder auf andere Weise installiert ist

Ich habe ein Skript, das eine Liste von Software mit Brew Cask installiert, und ich möchte nicht, dass es eine Software installiert, die bereits auf dem Computer vorhanden ist

Um dies zu erreichen, habe ich mich auf diese Frage bezogen: Wie kann mit Homebrew überprüft werden, ob eine Software/ein Paket installiert ist?

Dies weist mich in die richtige Richtung, aber ich kann nur vermeiden, Software zu installieren, die über Brew Cask installiert wird.

Wenn die Software durch Herunterladen der dmg installiert wird und bereits im Ordner /Applications/ vorhanden ist, erkennt sie dies nicht und fährt mit der Installation der Software fort.

Gibt es eine Möglichkeit herauszufinden, ob die Anwendung über Brew oder auf andere Weise installiert wurde, bevor mein Skript mit der Installation beginnt

„Wenn die Software durch Herunterladen der dmg installiert wird und bereits im Ordner „/Applications/“ vorhanden ist, erkennt sie dies nicht und fährt mit der Installation der Software fort.“ Verwenden Sie findden Befehl, um den Ordner /Applicationsund ~/Applicationsnach der Zielformel zu durchsuchen. Listen Sie alle Übereinstimmungen in der Konsole auf und fragen Sie den Benutzer, ob er mit der Installation fortfahren möchte oder nicht.
@anki Aber der Formelname und der Anwendungsname sind nicht gleich. Zum Beispiel ist die Google Chrome-Formel google-chrome, während der Anwendungsname „Google Chrome“ lautet. In diesem Szenario muss ich das Skript weiter bearbeiten, wenn die App beschließt, ihren Namen zu ändern.
Regex, Suche ohne Berücksichtigung der Groß-/Kleinschreibung usw. können hier hilfreich sein. Mir ist keine zentrale Liste aller installierten Apps bekannt. man muss nur suchen..
@anki denke ich. Ich hatte gehofft, dass es eine Möglichkeit gibt, den App-Namen vor der Installation aus der Formel zu extrahieren, aber es scheint, dass ich keine andere Option habe.
Sie können die Ausgabe von brew cask info --json=v1 google-chromeoder analysieren brew cask info google-chrome, um den Namen zu finden, unter dem das Fass installiert wird. Es hilft jedoch nicht bei umbenannten Anwendungen.
@nohillside Wenn Apps umbenannt werden, ist es mir egal. Der Benutzer muss es herausfinden, aber dieser Befehl würde mein Leben definitiv einfacher machen. Danke
@nohillside Das hat es geschafft. Super, danke

Antworten (2)

Ich nehme an, Sie kennen den Namen der Anwendung. Testen Sie dann einfach die Existenz der Anwendung

if [[ ! -d "/Applications/APP-TO-CHECK.app" ]]; then
    # install APP-TO-CHECK
fi 
Der Formelname und der Anwendungsname sind jedoch nicht identisch. Zum Beispiel ist die Google Chrome-Formel google-chrome, während der Anwendungsname „Google Chrome“ lautet. In diesem Szenario muss ich das Skript weiter bearbeiten, wenn die App beschließt, ihren Namen zu ändern.
Ich habe versucht, Ihr Skript auszuführen, aber es gibt mir den folgenden Fehler: Syntaxfehler im bedingten Ausdruck -> if [[ ! -d /Applications/Google Chrome.app ]]; Dann
Das Hinzufügen von Anführungszeichen hat das Problem behoben
@NickDiv Namen mit Leerzeichen müssen in der Shell immer in Anführungszeichen gesetzt werden. Was das Umbenennungsproblem betrifft: Ich sehe keinen ausfallsicheren Weg, um alle möglichen Szenarien abzudecken, und halte dies ehrlich gesagt für selten. Notfalls würde ich einfach auf alle bekannten Namen testen.
Das ist der POSIX-Standard für Tests. Es genügt zu schreiben [und ]. Dies funktioniert in jeder Shell. Es besteht keine Notwendigkeit für [[und ]]. Siehe BashFAQ/031: mywiki.wooledge.org/BashFAQ/031

Dies ist eine primitive Lösung, aber es könnte helfen.

  1. Laden Sie diese App herunter (sie ermöglicht Ihnen, versteckte Dateien zu durchsuchen.)
  2. Suchen Sie nach dem Namen Ihrer Anwendung/Repo, die Sie herunterladen möchten.
  3. Wenn es nicht da ist, dann ist es sicher zu sagen, dass Sie es nicht haben.