
有沒有辦法找出哪個brew
套件提供給定的檔案(例如apt-file
在 Ubuntu 上或pkgfile
在pacman -F
Arch 上)?
我不是說查詢哪個本地安裝的軟體包在我的系統上擁有一個文件,我有一個需要安裝的特定文件(/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