
Existe uma maneira de descobrir qual brew
pacote fornece um determinado arquivo (como apt-file
no Ubuntu ou pkgfile
/ pacman -F
no Arch)?
Não estou falando sobre consultar qual pacote instalado localmente possui um arquivo em meu sistema, tenho um arquivo específico que preciso instalar ( /usr/local/lib/libboost_python.dylib
para ser mais específico) e quero saber qual pacote remoto forneceria esse arquivo.
Responder1
Não há. Nada no Homebrew mantém uma lista de arquivos que um pacote pode ou deve instalar.
Responder2
Como afirmado nesterespondervocê pode fazer ls -l /usr/local//lib/whatever
e ver para onde o link simbólico aponta.
Responder3
Embora não exista um comando integrado brew
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ê estiver fazendo alguma limpeza e tiver que responder esse tipo de consulta mais de uma vez, você pode fazer o que eu fiz algumas vezes: criar um catálogo de arquivos por pacote:
#!/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
Se você redirecionar a saída desse script para um arquivo, poderá usá-lo para procurar o pacote que fornece o arquivo de interesse.
Responder4
Aqui está o one-liner que tenho em meu bin
diretório 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,\}\)\/.*$/\1/ p' ; fi