¿Hay alguna manera de verificar qué indicadores se dieron cuando se instaló un paquete con homebrew?
Por ejemplo, la fórmula de emacs tiene un número absurdo de banderas. Si lo hice
brew install emacs --with-glib --with-librsvg
Me gustaría determinar más tarde que para la instalación de emacs homebrew le di las banderas --with-glib --with-librsvg
y no otras banderas.
Caso de prueba con paquete lua:
Antes de instalar el paquete, la información muestra todas las opciones.
$ brew info lua
lua: stable 5.2.3 (bottled)
http://www.lua.org/
Not installed
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/lua.rb
==> Options
--universal
Build a universal binary
--with-completion
Enables advanced readline support
--without-sigaction
Revert to ANSI signal instead of improved POSIX sigaction
Instalo el paquete solo con la --with-completion
bandera.
$ brew install lua --with-completion
==> Downloading http://www.lua.org/ftp/lua-5.2.3.tar.gz
######################################################################## 100.0%
==> Downloading http://luajit.org/patches/lua-5.2.0-advanced_readline.patch
######################################################################## 100.0%
==> Downloading http://lua-users.org/files/wiki_insecure/power_patches/5.2/lua-5
######################################################################## 100.0%
==> Patching
patching file Makefile
patching file src/Makefile
patching file src/lua.c
Hunk #1 succeeded at 231 (offset -5 lines).
Hunk #2 succeeded at 559 (offset -4 lines).
Hunk #3 succeeded at 575 (offset -4 lines).
patching file src/lua.c
==> make macosx INSTALL_TOP=/usr/local/Cellar/lua/5.2.3_1 INSTALL_MAN=/usr/local
==> make install INSTALL_TOP=/usr/local/Cellar/lua/5.2.3_1 INSTALL_MAN=/usr/loca
🍺 /usr/local/Cellar/lua/5.2.3_1: 13 files, 312K, built in 6 seconds
Después de instalar el paquete, la información muestra todas las opciones, incluidas las que no usé. El comando reconoce que el paquete se creó desde la fuente y no se vertió de una botella.
$ brew info lua
lua: stable 5.2.3 (bottled)
http://www.lua.org/
/usr/local/Cellar/lua/5.2.3_1 (13 files, 312K) *
Built from source with: --with-completion
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/lua.rb
==> Options
--universal
Build a universal binary
--with-completion
Enables advanced readline support
--without-sigaction
Revert to ANSI signal instead of improved POSIX sigaction
Hay un archivo
/usr/local/Cellar
debajo de cada paquete que se llamaINSTALL_RECEIPT.json
, por ejemplo, paragawk
:eso define cómo se instaló el paquete. Creo que la forma correcta de acceder es con
p.ej
Eso arroja un montón de cosas, pero si lo envía a través de
jq
(Procesador JSON, disponible a través dehomebrew
) puede seleccionar las opciones que utilizó para instalar el paquete de esta manera (verificando elgnuplot
paquete):que me dice que instalé
gnuplot
usando:fuente
for package in $(brew list); do echo -n "brew install $package "; for item in $(brew info --json=v1 $package | jq -r '.[0].installed[0].used_options | .[]'); do echo -n "$item "; done; echo ; done 2>/dev/null
se puede usar para generar una lista de comandos brew install que puede usar en otro lugar.Otra herramienta útil es
homebrew-bundler
. Una vez instalado a través debrew tap Homebrew/bundle
, puede ejecutarbrew bundle dump
y creará un archivo Brewfile que enumera todos los paquetes que ha instalado junto con cualquier argumento adicional utilizado para instalarlos.fuente
Brewfile
y verificarlo en su repositorio de archivos de puntos, es fácil "configurar" nuevas máquinas. Sin embargo, enumera todos los paquetes, incluidas todas las dependencias. Actualmente tengo que analizar la lista de unabrew leaves
lista que enumera solo los paquetes instalados de nivel superior.Aquí hay una pequeña función bash que devuelve las banderas independientemente de si el paquete fue construido desde la fuente o no.
Para usar esta función bash dentro de un script bash, escriba
donde
PKGNAME
está el nombre del paquete homebrew deseado. También puede iterar a través de todos los paquetes homebrew instalados dentro de un script bash como.
fuente
jq
procesador JSON de línea de comandos