Wie kann ermittelt werden, welches Brew-Paket eine bestimmte Datei bereitstellt?

Wie kann ermittelt werden, welches Brew-Paket eine bestimmte Datei bereitstellt?

Gibt es eine Möglichkeit herauszufinden, welches brewPaket eine bestimmte Datei bereitstellt (wie apt-fileunter Ubuntu oder pkgfile/ pacman -Funter Arch)?

Ich spreche nicht von der Abfrage, welchem ​​lokal installierten Paket eine Datei auf meinem System gehört, sondern ich habe eine bestimmte Datei, die ich installieren muss ( /usr/local/lib/libboost_python.dylibum genau zu sein) und möchte wissen, welches Remote-Paket diese Datei bereitstellt.

Antwort1

Nein, das gibt es nicht. Homebrew verwaltet keine Liste der Dateien, die ein Paket installieren darf oder soll.

Antwort2

Wie in diesem Dokument dargelegtAntwortSie können dies tun ls -l /usr/local//lib/whateverund sehen, wohin der symbolische Link verweist.

Antwort3

Obwohl es keinen integrierten brewBefehl zum Suchen nach einer bestimmten Datei gibt, können Sie eine Kombination aus brew listund verwenden brew list <formula>, um die Antwort zu erhalten. Das dauert eine Weile, aber wenn Sie eine Bereinigung durchführen und diese Art von Abfrage mehr als einmal beantworten müssen, können Sie das tun, was ich manchmal getan habe: Erstellen Sie einen Katalog der Dateien nach Paket:

#!/bin/sh
# make a catalog of Homebrew-installed packages by package
brew list --formula |\
  while read formula; do
    brew list $formula |\
    while read file; do
      echo -e "$formula\t$file" # need -e to expand \t
    done
done

Wenn Sie die Ausgabe dieses Skripts in eine Datei umleiten, können Sie damit nach dem Paket suchen, das die gewünschte Datei bereitstellt.

Antwort4

Hier ist der Einzeiler, den ich bingenau zu diesem Zweck in meinem Verzeichnis habe:

$ cat ~/bin/brewpkg

#!/bin/bash
which -s $1 ; if [ $? -eq 0 ] ; then ls -lF `which $1` | sed -n 's/^.*\/Cellar\/\([^\/]\{1,\}\)\/.*$/\1/ p' ; fi

verwandte Informationen