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