どのbrewパッケージが特定のファイルを提供するかを決定する方法は?


16

brew特定のファイルを提供するパッケージを特定する方法はありますか(apt-fileUbuntuやpkgfileArchなど)?

システムにファイルを所有しているローカルにインストールされたパッケージを照会することについて話しているのではなく、インストールする必要がある特定のファイルがあり(/usr/local/lib/libboost_python.dylib具体的に)、どのリモートパッケージがそのファイルを提供するかを知りたいです。


このファイルは、でboost構成する限り提供されます--with-python。ファイルがどのファイルで提供されたクエリへの道があった場合は、まだ知っていいだろう...
mgalgs

FWIWこれは、boost-python代わりに提供されるようになりました。
ティムスミス

回答:


8

存在しない。Homebrewには、パッケージのインストールが許可または期待されるファイルのリストは保持されません。



4

ファイルを提供できる公的なhomebrewパッケージを見つけることができるapt-searchのようなツールはありませんが、多くのbrewパッケージは、LinuxまたはUNIXの同等物に基づいています。DebianパッケージのWebサイトを検索して、必要なパッケージを見つけることができます。

ファイルgoocanvas.pcを提供するパッケージを見つける例

https://packages.debian.org/search?suite=default§ion=all&arch=any&searchon=contents&keywords=goocanvas.pc

libgoocanvas-devを返します

brew searchlibgoocanvas-devまたはlibgoocanvasの結果はありませんが、goocanvasパッケージがあります。

ineed以下を使用してdebian.orgからリストを返すコマンドを定義できますineed goocanvas.pc

ineed() {
echo -en $(echo \
    $(curl -s "https://packages.debian.org/search?suite=default&section=all&arch=any&searchon=contents&keywords=$1") \
       | sed 's%</*tr>%\\n%g') \
    | grep 'class="file"' \
    | sed 's/<[^>]*>//g' \
    | column -t \
    | grep --color -i -w "$1"
}

0

そこではありませんが、組み込みのbrew特定のファイルを検索するためのコマンドは、の組み合わせを使用することができますbrew listし、brew list <formula>答えを得るために。しばらく時間がかかりますが、クリーンアップを実行していて、この種のクエリに複数回応答する必要がある場合、私がやったことがあるかもしれません。パッケージごとにファイルのカタログを作成します。

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

このスクリプトの出力をファイルにリダイレクトする場合、それを使用して、目的のファイルを提供するパッケージを検索できます。


これは良いことですが、現在インストールされているパッケージを検索します。質問は、インストールされていないパッケージの検索について尋ねています。
バーハン・アリ

-1

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.