如何确定哪个 brew 包提供了给定的文件?

如何确定哪个 brew 包提供了给定的文件?

有没有办法找出哪个brew包提供了给定的文件(例如apt-file在 Ubuntu 或pkgfileArchpacman -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

相关内容