Домашня мова: Список лише встановлених формул верхнього рівня


102

Я шукаю спосіб показати лише ті формули, які я встановив без встановлених залежностей. Я хочу скласти список усіх програм, які я фактично встановив, без всякого шуму залежностей.

Я про це знаю brew list якому списку всі встановлені формули. Я також знаю, що brew graphдає мені графік залежності вgraphviz

Або іншими словами: я хочу мати мінімальний набір формул для перевстановлення моєї системи.


brew graph??? Я отримую Error: Unknown command: graph. Такої команди немає.
іконоборство

brew graphпредставляється пакетом, який ви можете встановити для цього github.com/martido/brew-graph , див. також blog.jpalardy.com/posts/untangling-your-homebrew-dependitions
netweb

Відповіді:


181

Використання brew leaves: покажіть встановлені формули, які не залежать від іншої встановленої формули.


1
Дякую! Однак це виявляється mysqlтак, ніби його нічого не вимагає, хоча це фактично вимагається в моїй системі mysql-connector-c++. Чи знаєте ви, чи це навмисно (наприклад, якщо brewзберігати, які формули встановлюються безпосередньо не лише, якщо це залежність чи ні)?
Харалан Добрев

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 )для скидання версій.
Майк Д

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
Дякую, це робить роботу!
Харалан Добрев

Дякую за ваш сценарій, але я знайшов відповідь Дениса кращою. 1) Це вбудований. brewраніше не було такої команди, але тепер, коли це робиться, краще використовувати вбудований. 2) У вашому сценарії добре показано обробку дупів. Наприклад, якщо я встановив, php55що встановлює, homebrew/dupes/zlibвін покаже, zlibщо це не залежність, що не відповідає дійсності. Ура!
Харалан Добрев

Чому б просто не використовувати cutна виході? Ось один лайнер:brew deps --installed | cut -d: -f1
mattmc3

@ mattmc3 Тому що це не робить те ж саме і не відповідає на запитання / підсумок, який задав ОП.
Адріан Фрюхвірт

1
Це має бути прийнятою відповіддю. Я не вважаю brew leavesсебе корисним.
Danyal Aytekin

3

це показує встановлені формули у вигляді дерева.

пивоваріння - встановлений - дерево

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.