有没有办法找出哪个brew包提供给定的文件(如apt-file在 Ubuntu 或pkgfile/pacman -F在 Arch 上)?
我不是在谈论查询哪个本地安装的包在我的系统上拥有一个文件,我有一个我需要安装的特定文件(/usr/local/lib/libboost_python.dylib具体来说)并且想知道哪个远程包将提供该文件。
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
Run Code Online (Sandbox Code Playgroud)
如果将此脚本的输出重定向到文件,则可以使用它来搜索提供感兴趣文件的包。
虽然没有像apt-search这样的工具可以让人们找到可以提供文件的公共自制程序包,但许多 brew 包是基于 linux 或 unix 对应的。您可以搜索 Debian 软件包网站以找到所需的软件包。
查找提供文件goocanvas.pc 的包的示例
返回libgoocanvas-dev
brew search没有libgoocanvas-dev或libgoocanvas 的结果,但它有一个goocanvas包。
您可以定义ineed如下命令,该命令将使用以下命令从 debian.org 返回列表ineed goocanvas.pc:
ineed() {
echo -en $(echo \
$(curl -s "https://packages.debian.org/search?suite=default§ion=all&arch=any&searchon=contents&keywords=$1") \
| sed 's%</*tr>%\\n%g') \
| grep 'class="file"' \
| sed 's/<[^>]*>//g' \
| column -t \
| grep --color -i -w "$1"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6578 次 |
| 最近记录: |