特定のファイルを提供する brew パッケージを判別するにはどうすればよいですか?

特定のファイルを提供する brew パッケージを判別するにはどうすればよいですか?

brew特定のファイルを提供するパッケージを特定する方法はありますか( apt-fileUbuntu や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

関連情報