如何在 Homebrew 中识别给定文件的包/公式,或所有包拥有的文件的列表?
问问题
41152 次
6 回答
101
要查看包中的所有文件:
brew ls <package>
要查找文件的包,请查看该文件,如下所示:
ls -l /usr/local/bin/whatever
如果它是由 Homebrew 安装的,它将是一个指向 的符号链接/usr/local/Cellar/something
,这样就会告诉你它来自哪个包。
于 2013-11-18T05:04:04.730 回答
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包,说文件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 回答
1
查找和 brew 前缀,(例如对于 opencv):
find `brew --prefix opencv3`/ -exec ls -l {} \;
(请注意明智地使用 -exec,永远不要忘记那些\;的,伙计们.. find 如何知道 -exec arg-list 已完成..)
于 2017-04-19T18:30:45.463 回答
0
Homebrew 软件包安装到 $(brew --prefix)/Cellar(通常是 /usr/local/Cellar)。
要找出文件属于哪些包,一种简单的方法是:
$ find $(brew --prefix)/Cellar/ | grep somefilename
于 2018-03-29T17:49:48.147 回答