
brew
特定のファイルを提供するパッケージを特定する方法はありますか( apt-file
Ubuntu やArch のpkgfile
/などpacman -F
)?
ローカルにインストールされたどのパッケージがシステム上のファイルを所有しているかを照会することについて話しているのではなく、インストールする必要がある特定のファイル(具体的には)があり/usr/local/lib/libboost_python.dylib
、どのリモート パッケージがそのファイルを提供するのかを知りたいのです。
答え1
ありません。Homebrew には、パッケージがインストールを許可されている、またはインストールが期待されているファイルのリストを保持するものはありません。
答え2
この答えls -l /usr/local//lib/whatever
シンボリックリンクがどこを指しているか確認できます。
答え3
brew
特定のファイルを検索する組み込みコマンドはありませんが、brew list
との組み合わせを使用しbrew list <formula>
て答えを得ることができます。 時間はかかりますが、クリーンアップを行っていて、この種のクエリに何度も答える必要がある場合は、私が時々行っているように、パッケージごとにファイルのカタログを作成することができます。
#!/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
このスクリプトの出力をファイルにリダイレクトすると、それを使用して、目的のファイルを提供するパッケージを検索できます。
答え4
bin
まさにこの目的のために私のディレクトリに用意したワンライナーを以下に示します。
$ cat ~/bin/brewpkg
#!/bin/bash
which -s $1 ; if [ $? -eq 0 ] ; then ls -lF `which $1` | sed -n 's/^.*\/Cellar\/\([^\/]\{1,\}\)\/.*$/\1/ p' ; fi