Como determinar qual pacote de preparação fornece um determinado arquivo?

11

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.

    
por mgalgs 11.07.2014 / 08:37

5 respostas

5

Não há. Nada no Homebrew mantém uma lista de arquivos que um pacote é permitido ou esperado para instalar.

    
por 26.07.2014 / 05:39
4

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

link

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&section=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"
}
    
por 09.03.2016 / 16:40
3

Como afirmado nesta resposta , você pode fazer ls -l /usr/local//lib/whatever e ver para onde o link simbólico aponta.

    
por 13.09.2014 / 05:56
0

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.

    
por 11.08.2016 / 17:28
-1

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
    
por 13.07.2017 / 18:17