Não há. Nada no Homebrew mantém uma lista de arquivos que um pacote é permitido ou esperado para instalar.
Existe uma maneira de descobrir qual brew
package fornece um determinado arquivo (como apt-file
no Ubuntu ou pkgfile
no Arch)?
Não estou falando sobre a consulta de qual pacote instalado localmente possui um arquivo no meu sistema, tenho um arquivo específico que preciso instalar ( /usr/local/lib/libboost_python.dylib
para ser específico) e quero saber qual pacote remoto forneceria esse arquivo.
Embora não exista apt-search como uma ferramenta que permita encontrar pacotes homebrew públicos que possam fornecer um arquivo, muitos pacotes de preparação são baseados em uma contraparte Linux ou Unix. Você pode procurar no site do pacote Debian para encontrar o pacote necessário.
Exemplo para encontrar o pacote que fornece o arquivo goocanvas.pc
Retorna libgoocanvas-dev
brew search
não tem resultados para libgoocanvas-dev ou libgoocanvas mas tem um pacote goocanvas .
Você pode definir um comando ineed
da seguinte maneira que retornaria uma lista do debian.org usando 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"
}
Como afirmado nesta resposta , você pode fazer ls -l /usr/local//lib/whatever
e ver para onde o link simbólico aponta.
Embora não exista um comando brew
integrado para procurar um arquivo específico, você pode usar uma combinação de brew list
e brew list <formula>
para obter a resposta. Demora um pouco, mas se você está fazendo alguma limpeza e tem que responder a esse tipo de consulta mais de uma vez, você pode fazer o que eu tenho feito algumas vezes: fazer um catálogo de arquivos por pacote:
#!/bin/sh
# make a catalog of Homebrew-installed packages by package
brew list |\
while read formula; do
brew list $formula |\
while read file; do
echo "$formula\t$file"
done
done
Se você redirecionar a saída desse script para um arquivo, poderá usá-lo para procurar o pacote que fornece o arquivo de interesse.
Aqui está o one-liner que eu tenho no meu diretório bin
exatamente para esse propósito:
$ cat ~/bin/brewpkg
#!/bin/bash
which -s $1 ; if [ $? -eq 0 ] ; then ls -lF 'which $1' | sed -n 's/^.*\/Cellar\/\([^\/]\{1,\}\)\/.*$// p' ; fi