Existe uma maneira de verificar quais sinalizadores foram dados quando um pacote foi instalado com homebrew?
Por exemplo, a fórmula emacs tem um número absurdo de sinalizadores. Se eu fiz
brew install emacs --with-glib --with-librsvg
Mais tarde, gostaria de determinar que, para a instalação homebrew do emacs, dei as bandeiras --with-glib --with-librsvg
e não outras.
Caso de teste com pacote lua:
Antes de instalar o pacote, as informações mostram todas as opções.
$ 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
Eu instalo o pacote apenas com a --with-completion
bandeira.
$ 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
Depois de instalar o pacote, as informações mostram todas as opções, incluindo as que não usei. O comando reconhece que o pacote foi criado a partir da fonte e não foi derramado de uma garrafa.
$ 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
Há um arquivo
/usr/local/Cellar
abaixo de cada pacote chamadoINSTALL_RECEIPT.json
, por exemplo, paragawk
:que define como o pacote foi instalado. Eu acho que a maneira correta de acessá-lo é com
por exemplo
Isso gera muitas coisas, mas se você enviar
jq
(JSON Processor - disponível com facilidadehomebrew
), poderá selecionar as opções usadas para instalar o pacote assim (verificando ognuplot
pacote):que me diz que eu instalei
gnuplot
usando:fonte
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
pode ser usado para gerar uma lista de comandos de instalação de distribuição que você pode usar em outro lugar.Outra ferramenta útil é
homebrew-bundler
. Uma vez instalado viabrew tap Homebrew/bundle
, você pode executarbrew bundle dump
e ele criará um arquivo Brewfile que lista todos os pacotes que você instalou, juntamente com quaisquer argumentos adicionais usados para instalá-los.fonte
Brewfile
e fazer o check-in no repositório do dotfiles facilita a configuração de novas máquinas. No entanto, lista todos os pacotes, incluindo todas as dependências. No momento, estou tendo que analisar a lista de umabrew leaves
lista que lista apenas os pacotes instalados de nível superior.Aqui está uma pequena função bash que retorna os sinalizadores, independentemente de o pacote ter sido construído a partir da fonte ou não.
Para usar esta função bash em um script bash, escreva
onde
PKGNAME
é o nome do pacote homebrew desejado. Você também pode percorrer todos os pacotes homebrew instalados em um script bash, como.
fonte
jq
processador JSON de linha de comando