
Gibt es eine Möglichkeit herauszufinden, welches brew
Paket eine bestimmte Datei bereitstellt (wie apt-file
unter Ubuntu oder pkgfile
/ pacman -F
unter 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.dylib
um 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/whatever
und sehen, wohin der symbolische Link verweist.
Antwort3
Obwohl es keinen integrierten brew
Befehl zum Suchen nach einer bestimmten Datei gibt, können Sie eine Kombination aus brew list
und 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 bin
genau 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