Come determinare quale pacchetto brew fornisce un determinato file?


16

C'è un modo per capire quale brewpacchetto fornisce un determinato file (come apt-filesu Ubuntu o pkgfilesu Arch)?

Non sto parlando di interrogare quale pacchetto installato localmente possiede un file sul mio sistema, ho un file particolare che devo installare ( /usr/local/lib/libboost_python.dylibper essere specifico) e voglio sapere quale pacchetto remoto fornirebbe quel file.


Si scopre che il file è fornito boostfinché lo si configura --with-python. Sarebbe comunque bello sapere se c'era un modo per interrogare quali file sono forniti da quali file ...
mgalgs

FWIW questo è ora fornito da boost-pythoninvece.
Tim Smith,

Risposte:


8

Non c'è. Nulla in Homebrew mantiene un elenco di file che un pacchetto è autorizzato o previsto per l'installazione.


5

Come indicato in questa risposta , puoi fare ls -l /usr/local//lib/whatevere vedere dove punta il collegamento simbolico.


Oppurels -l $(which somecommand)
mivk,

4

Anche se non esiste uno strumento simile a apt-search che consente di trovare pacchetti homebrew pubblici che potrebbero fornire un file, molti pacchetti brew sono basati su una controparte Linux o Unix. È possibile cercare nel sito Web del pacchetto Debian per trovare il pacchetto necessario.

Esempio per trovare un pacchetto che fornisce il file goocanvas.pc

https://packages.debian.org/search?suite=default§ion=all&arch=any&searchon=contents&keywords=goocanvas.pc

Restituisce libgoocanvas-dev

brew searchnon ha risultati per libgoocanvas-dev o libgoocanvas ma ha un pacchetto goocanvas .

È possibile definire un comando ineedcome segue che restituirebbe un elenco da 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"
}

0

Sebbene non sia disponibile un brewcomando incorporato per cercare un file specifico, è possibile utilizzare una combinazione di brew liste brew list <formula>per ottenere la risposta. Ci vuole un po 'di tempo, ma se stai facendo un po' di pulizia e devi rispondere a questo tipo di query più di una volta, potresti fare quello che ho fatto a volte: creare un catalogo di file per pacchetto:

#!/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 -e "$formula\t$file" # need -e to expand \t
    done
done

Se si reindirizza l'output di questo script su un file, è possibile utilizzarlo per cercare il pacchetto che fornisce il file di interesse.


Questo è buono, ma cerca i pacchetti attualmente installati. La domanda è sulla ricerca di pacchetti non installati.
Burhan Ali,

-1

Ecco il one-liner che ho nella mia bindirectory esattamente per questo scopo:

$ cat ~/bin/brewpkg

#!/bin/bash
which -s $1 ; if [ $? -eq 0 ] ; then ls -lF `which $1` | sed -n 's/^.*\/Cellar\/\([^\/]\{1,\}\)\/.*$/\1/ p' ; fi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.