Czy istnieje sposób, aby sprawdzić, jakie flagi zostały podane, gdy pakiet został zainstalowany z Homebrew?
Na przykład formuła emacs ma absurdalną liczbę flag. Gdybym to zrobił
brew install emacs --with-glib --with-librsvg
Chciałbym później ustalić, że dla domowej instalacji emacsa podałem flagi, --with-glib --with-librsvg
a nie inne flagi.
Walizka testowa z pakietem lua:
Przed zainstalowaniem pakietu informacje pokazują wszystkie opcje.
$ 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
Instaluję pakiet tylko z --with-completion
flagą.
$ 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
Po zainstalowaniu pakietu informacje pokazują wszystkie opcje, w tym te, których nie użyłem. Polecenie potwierdza, że paczka została zbudowana ze źródła i nie została wylana z butelki.
$ 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
/usr/local/Cellar
Pod każdym pakietem, który jest wywoływanyINSTALL_RECEIPT.json
, znajduje się plik , np. Dlagawk
:określa sposób instalacji pakietu. Myślę, że właściwym sposobem jest dostęp do niego
na przykład
To wyrzuca mnóstwo rzeczy, ale jeśli wyślesz go przez
jq
(JSON Processor - łatwo dostępny przezhomebrew
), możesz wybrać opcje użyte do zainstalowania pakietu w ten sposób (sprawdzaniegnuplot
pakietu):co mówi mi, że zainstalowałem
gnuplot
za pomocą:źródło
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
może służyć do wyświetlania listy poleceń instalacji parzenia, których można użyć w innym miejscu.Innym przydatnym narzędziem jest
homebrew-bundler
. Po zainstalowaniubrew tap Homebrew/bundle
możesz uruchomićbrew bundle dump
i utworzy plik Brewfile, który zawiera listę wszystkich zainstalowanych pakietów wraz z wszelkimi dodatkowymi argumentami użytymi do ich zainstalowania.źródło
Brewfile
i sprawdzanie w repozytorium dotfiles ułatwia „konfigurowanie” nowych maszyn. Chociaż zawiera listę wszystkich pakietów, w tym wszystkich zależności. Obecnie muszę analizować listę zbrew leaves
listy, która zawiera tylko zainstalowane pakiety najwyższego poziomu.Oto mała funkcja bash, która zwraca flagi niezależnie od tego, czy pakiet został zbudowany ze źródła, czy nie.
Aby użyć tej funkcji bash w skrypcie bash, napisz
gdzie
PKGNAME
jest pożądana nazwa pakietu homebrew. Możesz także iterować przez wszystkie zainstalowane pakiety homebrew w skrypcie bash jako.
źródło
jq
procesor JSON wiersza polecenia