9 votos

Encontrar los ejecutables asociados con Homebrew Fórmula

Algunos Homebrew fórmulas tienen nombres que no se corresponden con ninguno de los que están instalados los comandos (por ejemplo, coreutils, speech-tools), otras fórmulas proporcionan un comando que coincide con el nombre, sino que también proporcionan otros junto a él (p. ej., lua).

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

Pensé que podría ser capaz de encontrar esta info con un brew link --dry-run <formula>, pero que normalmente solo me da una advertencia de que la fórmula ya está vinculado (incluso con --overwrite o --force añadido a la orden). Yo no quiero tener que desvincular cada vez que quiero ver los comandos, por lo que esta ruta no parece útil.

13voto

SnoringFrog Puntos 121

Como bmike la respuesta señala, además de la excavación a través de los proyectos de origen para determinar qué archivos ejecutables que instalar, no hay una buena manera de determinar qué comandos vienen con una fórmula antes de la instalación.

Después de una fórmula está instalado, se ejecuta

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 que se agregó escribí un comando externo llamado brew executables que todavía tiene algunas ventajas sobre el anterior (principalmente en el formato y el manejo de algunos enlaces de una forma un poco diferente). Voy a incluir un simplificada (y probablemente no de trabajo, debido a la falta de algunas asignaciones de variables), la versión de aquí:

version_in_use=$(echo "$brew_info" | grep "$HOMEBREW_PREFIX.*\*$" | sed -e "s|.*$formula/\([^ ]*\).*|\1|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 definitiva, se tira de la lista de ejecutables de $(brew --prefix)/$formula/$version_in_use/bin. La versión en mi GitHub es un poco más completos, incluyendo algunos añadida la capacidad para identifica/indica cuando hay comandos que se vinculan a cada uno de los otros en este directorio bin.

3voto

chollida Puntos 4583

Escribí Homebrew-comando no encontrado para hacer la inversa cosa: obtener una fórmula de un archivo ejecutable. No hay ninguna manera fácil de obtener una fórmula archivos ejecutables como otras respuestas señalado; lo he instalado todos los Homebrew fórmulas y graba todos los archivos ejecutables en un archivo.

Usted puede encontrar aquí. Cada fórmula tiene su propia línea con el siguiente formato:

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

Es así tan fácil como grep ^git: executables.txt para obtener los archivos ejecutables instalados por el git de la fórmula.

El archivo se actualiza cada día y cubre 20k+ comandos para 5k+ fórmulas desde el núcleo y el oficial de grifos. Nota sin embargo, que algunas de las fórmulas de instalar archivos ejecutables diferentes cuando se utilizan las opciones específicas; yo no apoyo a ellos aquí.

0voto

Oskar Puntos 1242

En general - no.

Homebrew no instalar el paquete de ingresos, que es la manera en la que las actuales herramientas de decidir lo que está instalado donde en una exhaustiva y correcta de la moda.

A veces se puede utilizar brew list a comprobar las cosas, pero he encontrado que la mejor forma de verificar homebrew es a través de github - que publica el código fuente de todas las herramientas y todos los paquetes.

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

!gh homebrew lua

Google hace un trabajo decente, así ranking de homebrew bastante alta, así como github

!g homebrew lua

También, brew info y brew home a menudo le dan un enlace directo a la fuente del proyecto para comprobar si sus sospechas son correctas. Como tú supones, el control real es desinstalar / reinstalar y el reloj. No es divertido, pero eficaz.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X