Encuentre ejecutables asociados con Homebrew Formula

7

Algunas fórmulas de Homebrew tienen nombres que no se corresponden con ninguno de los comandos instalados (por ejemplo, coreutils , speech-tools ), otras fórmulas proporcionan un comando que coincide con el nombre, pero también proporcionan otras a su lado (por ejemplo, , lua ).

¿Hay una forma sencilla de determinar qué comandos están asociados con una fórmula dada? Idealmente como comando brew <arg> antes de instalar, pero incluso un script de shell que podría usar después de la instalación ayudaría.

Pensé que podría ser capaz de resolver esta información con un brew link --dry-run <formula> , pero eso normalmente solo me da una advertencia de que la fórmula ya está vinculada (incluso con --overwrite o --force agregado al comando). No quiero tener que desvincularme cada vez que quiero ver los comandos, por lo que esta ruta no parece ser útil.

    
pregunta SnoringFrog 03.09.2015 - 17:24

3 respuestas

10

Como lo señala la respuesta de bmike , aparte de investigar la fuente de los proyectos para determinar qué ejecutables instalan, hay no es una buena manera de determinar qué comandos vienen con una fórmula dada antes de instalarla.

Después de instalar una fórmula, ejecutando

brew unlink --dry-run formula | grep "$(brew --prefix)/bin"

es una opción viable ahora que --dry-run está disponible para brew unlink .

Antes de agregar eso, escribí un comando externo llamado brew executables que aún tiene algunos beneficios sobre los anteriores (principalmente en el formato y el manejo algunos enlaces un poco diferentes). Incluiré una versión simplificada (y probablemente no operativa, debido a que faltan algunas asignaciones de variables) aquí:

version_in_use=$(echo "$brew_info" | grep "$HOMEBREW_PREFIX.*\*$" | sed -e "s|.*$formula/\([^ ]*\).*||i")

cd "$HOMEBREW_CELLAR/$formula/$version_in_use" 
for dir in 'find . -type d -mindepth 1 -maxdepth 1 -name "bin"'; do
    for file in 'find "$dir" -type f -o -type l -perm +111'
    do
            filename=$(basename $file)
            echo $filename
    done        
done

En resumen, saca la lista de ejecutables de $(brew --prefix)/$formula/$version_in_use/bin . La versión en mi GitHub es un poco más completa, incluida alguna capacidad adicional para identificar / indicar cuándo hay comandos que se enlazan entre sí en este directorio bin.

    
respondido por el SnoringFrog 03.09.2015 - 23:26
1

Escribí Homebrew-command-not-found para hacer lo contrario: obtener una fórmula de un ejecutable No hay una manera fácil de obtener los ejecutables de una fórmula como se indica en otras respuestas; así que instalé todas las fórmulas de Homebrew y registré todos los ejecutables en un archivo.

Puede encontrarlo aquí . Cada fórmula tiene su propia línea con el siguiente formato:

<name>: <executable-1> <executable-2> <...>

Por lo tanto, es tan fácil como grep ^git: executables.txt obtener los ejecutables instalados con la fórmula git .

El archivo se actualiza todos los días y cubre 20k + comandos para 5k + fórmulas desde el núcleo y los toques oficiales. Sin embargo, tenga en cuenta que algunas fórmulas instalan diferentes ejecutables cuando utiliza opciones específicas; No los apoyo aquí.

    
respondido por el bfontaine 27.10.2015 - 23:43
0

En general - no.

Homebrew no instala recibos de paquetes, que es la manera en que las herramientas actuales deciden qué se instala en una forma exhaustiva y correcta.

A veces puedes usar brew list para verificar cosas, pero he encontrado que la mejor manera de verificar Homebrew es a través de github, que publica el código fuente de todas las herramientas y todos los paquetes.

Mi motor de búsqueda favorito incluso tiene! comandos para facilitar la búsqueda de github:

!gh homebrew lua

Google hace un trabajo decente y clasifica a homebrew bastante alto, así como a github

!g homebrew lua

Además, brew info y brew home a menudo le dan un enlace directo a la fuente del proyecto para verificar si sus sospechas son correctas. Como usted supone, la verdadera comprobación es desinstalar / reinstalar y ver. No es divertido, pero es efectivo.

    
respondido por el bmike 03.09.2015 - 18:23

Lea otras preguntas en las etiquetas