Gibt es eine Möglichkeit zu überprüfen, welche Flags bei der Installation eines Pakets mit Homebrew vergeben wurden?
Zum Beispiel hat die Emacs-Formel eine absurde Anzahl von Flags. Wenn ich es tat
brew install emacs --with-glib --with-librsvg
Ich möchte später feststellen, dass ich für die Homebrew-Installation von Emacs die Flags --with-glib --with-librsvg
und keine anderen Flags gegeben habe.
Testfall mit lua Paket:
Vor der Installation des Pakets werden in info alle Optionen angezeigt.
$ 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
Ich installiere das Paket nur mit der --with-completion
Flagge.
$ 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
Nach der Installation des Pakets zeigt info alle Optionen an, einschließlich derer, die ich nicht verwendet habe. Der Befehl bestätigt, dass das Paket aus der Quelle erstellt und nicht aus einer Flasche gegossen wurde.
$ 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
Unter jedem Paket befindet sich eine Datei , die aufgerufen wirdINSTALL_RECEIPT.json
, zB fürgawk
:das definiert, wie das Paket installiert wurde. Ich denke, die richtige Art, darauf zuzugreifen, ist mit
z.B
Das spuckt eine Menge Zeug aus, aber wenn Sie es durchschicken
jq
(JSON-Prozessor - handlich verfügbar überhomebrew
), können Sie die Optionen auswählen, mit denen Sie das Paket wie folgt installiert haben (überprüfen Sie dasgnuplot
Paket):was mir sagt, dass ich installiert habe
gnuplot
mit:quelle
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
kann verwendet werden, um eine Liste von Brew-Installationsbefehlen auszugeben, die Sie an anderer Stelle verwenden können.Ein weiteres nützliches Werkzeug ist
homebrew-bundler
. Nach der Installation überbrew tap Homebrew/bundle
könnenbrew bundle dump
Sie das Programm ausführen und eine Brewfile-Datei erstellen, in der alle von Ihnen installierten Pakete zusammen mit zusätzlichen Argumenten aufgelistet sind, die für die Installation verwendet wurden.quelle
Brewfile
Wenn Sie das bearbeiten und in Ihr dotfiles-Repo einchecken, können Sie ganz einfach neue Maschinen "einrichten". Es werden jedoch alle Pakete einschließlich aller Abhängigkeiten aufgelistet. Ich muss derzeit die Liste aus einerbrew leaves
Liste analysieren, die nur die obersten installierten Pakete auflistet.Hier ist eine kleine Bash-Funktion, die die Flags zurückgibt, unabhängig davon, ob das Paket aus dem Quellcode erstellt wurde oder nicht.
Um diese Bash-Funktion in einem Bash-Skript zu verwenden, schreiben Sie
wo
PKGNAME
ist der gewünschte Homebrew-Paketname. Sie können auch alle installierten Homebrew-Pakete innerhalb eines Bash-Skripts als durchlaufen.
quelle
jq
Befehlszeilen-JSON-Prozessor