Homebrew: список только установленных формул верхнего уровня

102

Я ищу способ показать только те формулы, которые я установил, без установленных зависимостей. Я хочу иметь список всех программ, которые я на самом деле установил, без всякого шума о зависимостях.

Я точно знаю, в brew listкаких списках все установленные формулы. Я также знаю, что это brew graphдает мне график зависимостей вgraphviz

Другими словами: я хочу иметь минимальный набор формул для переустановки моей системы.


источник
brew graph??? Я понимаю Error: Unknown command: graph. Нет такой команды.
iconoclast
brew graphпохоже, это пакет, который вы можете установить для этого github.com/martido/brew-graph , см. также blog.jpalardy.com/posts/untangling-your-homebrew-dependencies
netweb

Ответы:

184

Использование brew leaves: отображение установленных формул, не зависимых от другой установленной формулы.

Денис Барушев
источник
1
Спасибо! Однако это действительно показывает, mysqlкак будто это ни для чего не требуется, хотя на самом деле это требуется в моей системе от mysql-connector-c++. Вы случайно не знаете, brewсделано ли это намеренно (например, если вы сохраняете, какие формулы устанавливаются напрямую, а не только в зависимости от того, зависит это или нет)?
Харалан Добрев 01
2
О, это существует! FWIW это можно найти Library/Homebrew/cmd/leaves.rbи в основном делает то же, что и мое решение, за исключением обработки необязательных / рекомендуемых зависимостей ( deps << dep.name if tab.with?(dep.name)). @HaralanDobrev Это наверняка объясняет поведение в mysqlвашей системе и почему результат отличается от моего решения, но вы можете легко адаптировать его leaves.rbпо своему вкусу.
Адриан Фрювирт
1
Отличная находка. Пользуюсь еще brew ls --versions $( brew leaves )brew ls --versions $( brew leaves )и дампом версий.
Mike D
21
$ 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

Это то, что вам нужно?

Адриан Фрювирт
источник
1
Спасибо, это работает!
Haralan Dobrev
Спасибо за сценарий, но я нашел, что ответ Дениса лучше. 1) Он встроен. brewраньше такой команды не было, но теперь, когда она есть, лучше использовать встроенную. 2) Ваш сценарий действительно хорошо показывает обработку дубликатов. Например, если я установил, php55какие установки, homebrew/dupes/zlibэто покажет, zlibчто это не зависимость, что не соответствует действительности. Ура!
Харалан Добрев 01
Почему бы просто не использовать cutна выходе? Вот один лайнер:brew deps --installed | cut -d: -f1
mattmc3
@ mattmc3 Потому что это не то же самое и не отвечает на вопрос / не дает выход, который задал OP.
Адриан Фрювирт
1
Это должен быть принятый ответ. Я не нашел brew leavesполезным.
Даньял Айтекин
3

это показывает установленные формулы в виде дерева.

brew deps --installed --tree

Я. Оздемир
источник