Suchen Sie nach ausführbaren Dateien, die mit Homebrew Formula verknüpft sind

7

Einige Homebrew Formeln haben Namen , die mit einem der installierten Befehle nicht entsprechen (zB coreutils, speech-tools), andere Formeln bieten ein Befehl, der mit dem Namen übereinstimmt, sondern auch anderen zur Verfügung stellen daneben (zB lua).

Gibt es eine einfache Möglichkeit zu bestimmen, welche Befehle einer bestimmten Formel zugeordnet sind? Idealerweise als brew <arg>Befehl vor der Installation, aber auch ein Shell-Skript, das ich nach der Installation verwenden könnte, würde helfen.

Ich dachte, ich könnte diese Informationen möglicherweise mit a herausfinden brew link --dry-run <formula>, aber das gibt mir normalerweise nur eine Warnung, dass die Formel bereits verknüpft ist (sogar mit dem Befehl --overwriteoder --forcedem Befehl hinzugefügt). Ich möchte nicht jedes Mal die Verknüpfung aufheben müssen, wenn ich die Befehle sehen möchte, daher scheint diese Route nicht hilfreich zu sein.

SchnarchenFrosch
quelle

Antworten:

10

Wie die Antwort von bmike zeigt, gibt es neben dem Durchsuchen der Projektquelle, um festzustellen, welche ausführbaren Dateien installiert werden, keine gute Möglichkeit, vor der Installation festzustellen, welche Befehle mit einer bestimmten Formel geliefert werden.

Nachdem eine Formel installiert wurde, wird ausgeführt

brew unlink --dry-run formula | grep "$(brew --prefix)/bin"

ist jetzt eine praktikable Option, --dry-rundie für verfügbar ist brew unlink.

Bevor das hinzugefügt wurde, habe ich einen externen Befehl namens geschrieben brew executables, der noch einige Vorteile gegenüber den oben genannten hat (hauptsächlich beim Formatieren und Behandeln einiger Links etwas anders). Ich werde hier eine vereinfachte (und wahrscheinlich nicht funktionierende) Version einfügen, da einige Variablenzuweisungen fehlen:

version_in_use=$(echo "$brew_info" | grep "$HOMEBREW_PREFIX.*\*$" | sed -e "s|.*$formula/\([^ ]*\).*|\1|i")

cd "$HOMEBREW_CELLAR/$formula/$version_in_use" 
for dir in `find . -type d -mindepth 1 -maxdepth 1 -name "bin"`; do
    for file in `find "$dir" -type f -o -type l -perm +111`
    do
            filename=$(basename $file)
            echo $filename
    done        
done

Kurz gesagt, es zieht die Liste der ausführbaren Dateien heraus $(brew --prefix)/$formula/$version_in_use/bin. Die Version auf meinem GitHub ist etwas ausführlicher, einschließlich einiger zusätzlicher Funktionen zum Identifizieren / Anzeigen, wenn sich in diesem bin-Verzeichnis Befehle befinden, die miteinander verknüpft sind.

SchnarchenFrosch
quelle
Nur eine kleine Verbesserung gegenüber dem ersten Befehl, um die ausführbaren Dateien selbst hervorzuheben, wenn Sie gnu grep installiert haben ( brew install grep). Der Befehl lautet wie folgt: Die brew unlink --dry-run grep | ggrep --color=always -P "$(brew --prefix)/bin/\K.*" Ausgabe erfolgt wie in diesem Screenshot dargestellt.
Ashutosh Jindal
1

Ich habe Homebrew-command-not-found geschrieben , um das Gegenteil zu tun: eine Formel aus einer ausführbaren Datei abrufen. Es gibt keine einfache Möglichkeit, die ausführbaren Dateien einer Formel abzurufen, wie andere Antworten hervorheben. Also habe ich alle Homebrew-Formeln installiert und alle ausführbaren Dateien in einer Datei aufgezeichnet.

Sie finden es hier . Jede Formel hat eine eigene Zeile mit folgendem Format:

<name>: <executable-1> <executable-2> <...>

Es ist also so einfach grep ^git: executables.txt, die ausführbaren Dateien durch die gitFormel zu installieren .

Die Datei wird täglich aktualisiert und umfasst mehr als 20.000 Befehle für mehr als 5.000 Formeln aus dem Kern und den offiziellen Taps. Beachten Sie jedoch, dass einige Formeln unterschiedliche ausführbare Dateien installieren, wenn Sie bestimmte Optionen verwenden. Ich unterstütze sie hier nicht.

bfontaine
quelle
0

Im Allgemeinen - nein.

Homebrew installiert keine Paketbelege. Auf diese Weise entscheiden die aktuellen Tools umfassend und korrekt, was wo installiert wird.

Manchmal können Sie brew listDinge überprüfen, aber ich habe herausgefunden, dass Homebrew am besten über Github überprüft werden kann - das den Quellcode für alle Tools und alle Pakete veröffentlicht.

Meine Lieblingssuchmaschine hat sogar! Befehle, die das Durchsuchen von Github vereinfachen:

!gh homebrew lua

Google macht einen anständigen Job und rangiert Homebrew ziemlich hoch sowie Github

!g homebrew lua

Auch brew infound brew homeoft geben Ihnen einen direkten Link zu dem Projekt Quelle zu überprüfen , ob Ihr Verdacht richtig ist. Wie Sie vermuten, besteht die eigentliche Prüfung darin, zu deinstallieren / neu zu installieren und zu beobachten. Nicht lustig, aber effektiv.

bmike
quelle
Können Sie mich auf eine Dokumentation zu diesen !Befehlen hinweisen ?
Iulian Onofrei