Como determinar qual pacote brew fornece um determinado arquivo?

Como determinar qual pacote brew fornece um determinado arquivo?

Existe uma maneira de descobrir qual brewpacote fornece um determinado arquivo (como apt-fileno Ubuntu ou pkgfile/ pacman -Fno 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.dylibpara 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/whatevere ver para onde o link simbólico aponta.

Responder3

Embora não exista um comando integrado brewpara procurar um arquivo específico, você pode usar uma combinação de brew liste 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 bindiretó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

informação relacionada