Determine los indicadores que se dieron para los paquetes instalados con homebrew

16

¿Hay alguna forma 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 indicadores. Si lo hiciera

brew install emacs --with-glib --with-librsvg

Me gustaría determinar más adelante que para la instalación casera de emacs di los indicadores --with-glib --with-librsvg y no otros indicadores.

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 el indicador --with-completion .

$ 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
                    
pregunta Praxeolitic 22.10.2014 - 19:51

4 respuestas

15

Cuando un paquete se crea a partir de la fuente, los indicadores que se usaron para compilar se muestran cuando haces brew info <package> .

En este caso: brew info emacs | grep "Built from source"

    
respondido por el André 27.10.2014 - 21:57
6

Hay un archivo en /usr/local/Cellar debajo de cada paquete que se llama INSTALL_RECEIPT.json , por ejemplo. para gawk :

/usr/local/Cellar/gawk/4.1.3/INSTALL_RECEIPT.json

que define cómo se instaló el paquete. Creo que la forma correcta de acceder es con

brew info --json=v1 <packagename>

por ejemplo

brew info --json=v1 gnuplot

Eso arroja un montón de cosas, pero si lo envía a través de jq (Procesador JSON - fácilmente disponible a través de homebrew ) puede seleccionar las opciones que usó para instalar el paquete de esta manera (marcando el gnuplot paquete):

brew info --json=v1 gnuplot | jq '.[].installed[0].used_options'
[
    "--with-qt"
]

que me dice que instalé gnuplot usando:

brew install --with-qt gnuplot 
    
respondido por el Mark Setchell 17.02.2016 - 16:59
4

Otra herramienta útil es homebrew-bundler . Una vez instalado a través de brew tap Homebrew/bundle , puede ejecutar brew bundle dump y creará un archivo Brewfile que enumera todos los paquetes que ha instalado junto con cualquier argumento adicional utilizado para instalarlos.

    
respondido por el rmarscher 24.02.2016 - 19:23
3

Aquí hay una pequeña función de bash que devuelve los indicadores independientemente de si el paquete se creó desde la fuente o no.

function brew_options()
{
    [ "$#" -ne 1 ] && >&2 echo -e "$FUNCNAME requires only 1 option, the package name" && return 1

    local item=$1
    local opts

    ## Check if package installed
    [ -n "$(brew ls --versions $item)" ] || ( >&2 echo -e "$item is not installed" && return 1 )

    set -o pipefail

    ## Get options if built from source
    if ! opts="$(brew info $item | grep 'Built from source with:' | sed 's/^[ \t]*Built from source with:/ /g; s/\,/ /g')" ; then
        # If not built from source, get options from brew metadata
        opts="$(brew info --json=v1 $item | jq -ec '.[].installed[0].used_options' | awk '{print substr($0, 2, length($0) - 2)}' | sed 's/,/ /g;s/"//g')"
    fi

    ## If we're able to get options and its just not spaces echo it 
    if [ "$?" -eq 0 ] && [[ ! -z "${opts// }" ]]; then
        echo "$opts"
    fi

    set +o pipefail

}

Para usar esta función de bash dentro de una escritura de script de bash

 brew_options PKGNAME

donde PKGNAME es el nombre del paquete homebrew deseado. También puede iterar a través de todos los paquetes homebrew instalados dentro de un script de bash como

 # Command to generate install script
 PKGS=$(brew list)

 # iterate through all packges
 for PKG in $PKGS; do

   echo $PKG 'brew_options $PKG'

 done

.

    
respondido por el Killeroid 18.07.2016 - 16:06

Lea otras preguntas en las etiquetas