63

Homebrewで、特定のファイルのパッケージ/式、またはパッケージが所有するすべてのファイルのリストを特定するにはどうすればよいですか?

4

6 に答える 6

7

ファイルが属するbrewパッケージ名を取得するために、この汚い関数を書きました:

function brew_find_pkg {
    file_to_search="$@"

    for package in $(brew list); do
        brew ls $package | grep -E -q "/${file_to_search}$"
        if [ $? -eq 0 ]; then
            echo $package
            break
        fi
    done
}

ターミナルにそれを入力するだけです。そして、ファイルが属しているbrewパッケージを見つけるために、たとえば file を見つけるには、次のgsedように関数を呼び出すだけです

brew_find_pkg gsed

ファイルのフル パスを指定すると、関数が機能しないことに注意してください。

于 2016-04-14T12:18:43.057 に答える
3

Cellar/PACKAGE/...パッケージ名は、バイナリ ( )を指すシンボリック リンクに基づいて決定できます。

$ ls -la $(which awk) # => gawk
lrwxr-xr-x 1 kenorb 28 May 20  2015 /usr/local/bin/awk -> ../Cellar/gawk/4.1.1/bin/awk

$ ls -la $(which seq) # => coreutils
lrwxr-xr-x 1 kenorb 14 Apr  8  2015 /usr/local/opt/coreutils/libexec/gnubin/seq -> ../../bin/gseq
于 2016-04-06T20:31:50.633 に答える
2

$( brew --prefix )/binこの関数は、ディレクトリ に格納されたコマンドに対して機能します。

function brew_find_pkg {

    cmds_to_search="$@"
    brew_bin=$( brew --prefix )/bin

    for cmd in $cmd_to_search ; do

        if [ -L $brew_bin/$cmd ] ; then
            \ls -l $brew_bin/$cmd |cut -f 2 -d '>'
        else
            echo "$cmd is not a brew command"
        fi
    done
}

例えば:

$ brew_find_pkg gawk gcc alskdfja
 ../Cellar/gawk/4.1.4_1/bin/gawk
 ../Cellar/gcc/5.3.0/bin/gcc
alskdfja is not a brew command
于 2017-09-29T19:04:43.943 に答える