如何在Brew中找到已安装文件的包?

Dus*_*rea 49 homebrew

如何在Homebrew中识别给定文件的包/公式或所有包拥有的文件的列表?

Pet*_*aut 78

要查看包中的所有文件:

brew ls <package>
Run Code Online (Sandbox Code Playgroud)

要查找文件包,请查看以下文件:

ls -l /usr/local/bin/whatever
Run Code Online (Sandbox Code Playgroud)

如果它是由Homebrew安装的,那么它将是一个符号链接/usr/local/Cellar/something,因此它将告诉你它来自哪个包.


ken*_*orb 6

包名可以根据指向二进制文件(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
Run Code Online (Sandbox Code Playgroud)


GMa*_*ter 6

刚写了这个脏函数来获取文件所属的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
}
Run Code Online (Sandbox Code Playgroud)

只需在终端输入即可.然后找到一个文件所属的brew包,比如文件pcregrep,只需调用这个函数

brew_find_pkg gsed
Run Code Online (Sandbox Code Playgroud)

请注意,如果提供文件的完整路径,则该函数将不起作用.

  • 如果您安装了很多 brew 公式,这可能会很慢。 (2认同)