如何決定哪個brew包提供給定的檔案?

如何決定哪個brew包提供給定的檔案?

有沒有辦法找出哪個brew套件提供給定的檔案(例如apt-file在 Ubuntu 上或pkgfilepacman -FArch 上)?

我不是說查詢哪個本地安裝的軟體包在我的系統上擁有一個文件,我有一個需要安裝的特定文件(/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

相關內容