¿Cómo determinar qué paquete de preparación proporciona un archivo determinado?


16

¿Hay alguna manera de averiguar qué brewpaquete proporciona un archivo determinado (como apt-fileen Ubuntu o pkgfileen Arch)?

No estoy hablando de preguntar qué paquete instalado localmente posee un archivo en mi sistema, tengo un archivo en particular que necesito instalado ( /usr/local/lib/libboost_python.dylibpara ser específico) y quiero saber qué paquete remoto proporcionaría ese archivo.


Resulta que el archivo se proporciona boostsiempre que lo configure --with-python. Todavía sería bueno saber si había una manera de consulta que proporciona archivos de archivos que ...
— mgalgs

FWIW esto ahora es proporcionado por en su boost-pythonlugar.
— Tim Smith

Respuestas:


8

No hay. Nada en Homebrew mantiene una lista de archivos que se permite o se espera que un paquete instale.


5

Como se indica en esta respuesta , puede hacer ls -l /usr/local//lib/whatevery ver a dónde apunta el enlace simbólico.


O bienls -l $(which somecommand)
— mivk

4

Si bien no existe una herramienta similar a apt-search que le permita a uno encontrar paquetes homebrew públicos que puedan proporcionar un archivo, muchos paquetes brew se basan en una contraparte de Linux o Unix. Puede buscar en el sitio web del paquete Debian para encontrar el paquete necesario.

Ejemplo para encontrar el paquete que proporciona el archivo goocanvas.pc

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

Devuelve libgoocanvas-dev

brew searchno tiene resultados para libgoocanvas-dev o libgoocanvas pero tiene un paquete goocanvas .

Puede definir un comando de la ineedsiguiente manera que devolvería una lista de 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

Aunque no hay un brewcomando incorporado para buscar un archivo específico, puede usar una combinación de brew listy brew list <formula>para obtener la respuesta. Lleva un tiempo, pero si está haciendo una limpieza y tiene que responder este tipo de consulta más de una vez, puede hacer lo que he hecho a veces: hacer un catálogo de archivos por paquete:

#!/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

Si redirige la salida de este script a un archivo, puede usarlo para buscar el paquete que proporciona el archivo de interés.


Esto es bueno, pero busca los paquetes instalados actualmente. La pregunta es acerca de buscar paquetes no instalados.
— Burhan Ali

-1

Aquí está la línea que tengo en mi bindirectorio para exactamente este 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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.