家酿: 列出只安装了顶级公式

我正在寻找一种方法,以显示只有公式,我安装没有安装的依赖关系。 我想有一个所有我实际安装的程序的列表,没有所有的噪音的依赖性。

我知道 brew list列出了所有安装的公式。 我还知道 brew graphgraphviz中给了我一个依赖关系图

或者换句话说: 我想用最小的公式集来重新安装我的系统。

24483 次浏览
$ brew deps --installed
tmux: pkg-config libevent
q:
gdbm:
libxml2:
asciidoc: docbook
libevent:
pkg-config:
pcre:
docbook:
zsh: gdbm pcre
readline:
emacs: pkg-config

这似乎给了我们一个所有已安装公式的列表,包括它们的依赖项。我们可以建立一个所有公式的列表和一个所有依赖关系的列表,并从公式列表中减去依赖关系,这应该给我们一个不依赖于其他公式的公式列表:

$ cat brew-root-formulae.sh
#!/bin/sh


brew deps --installed | \
awk -F'[: ]+' \
'{
packages[$1]++
for (i = 2; i <= NF; i++)
dependencies[$i]++
}
END {
for (package in packages)
if (!(package in dependencies))
print package
}'

.

$ ./brew-root-formulae.sh
zsh
asciidoc
libxml2
readline
tmux
q
emacs

这是你想要的输出吗?

使用 brew leaves: 显示不依赖于另一个已安装公式的已安装公式。

这将以树的形式显示已安装的公式。

brew deps --installed --tree

只显示一级以下的依赖项

brew deps --1 --installed --tree

只显示已安装的 php 公式

brew deps --installed --tree php

打开一个可视化的网站

brew deps --installed --graph php

这个问题很古老,但实际上只有 这个的答案解决了这个问题。然而,这更像是一个变通方案。但在 brew中还有一种现成的解决方案:

brew bundle dump --file -

来自文件:

brew bundle dump:
Write all installed casks/formulae/images/taps into a Brewfile in the
current directory.

还有国旗:

--file
Read the Brewfile from this location.
Use --file=- to pipe to stdin/stdout.

结果我们得到例如:

tap "homebrew/bundle"
tap "homebrew/cask"
tap "homebrew/cask-fonts"
tap "homebrew/core"
tap "homebrew/services"
tap "jesseduffield/lazydocker"
tap "jesseduffield/lazygit"
brew "lazydocker"
brew "lazygit"
cask "font-sauce-code-pro-nerd-font"

如果你需要一个纯粹的配方和木桶列表,不需要点击,你可以直接运行:

brew bundle dump --file - | grep '^brew\|^cask' | sed 's/.* "\(.*\)".*$/\1/'

然后得到:

lazydocker
lazygit
font-sauce-code-pro-nerd-font

附言。如果您实际上将输出保存到文件中(使用 brew bundle dumpbrew bundle dump --file PATH_TO_FILE) ,您可以很容易地使用 brew bundle install安装它的所有依赖项:

brew bundle [install]:
Install and upgrade (by default) all dependencies from the Brewfile.


You can specify the Brewfile location using --file or by setting the
HOMEBREW_BUNDLE_FILE environment variable.