Homebrew: Liste uniquement les formules de niveau supérieur installées

102

Je cherche un moyen d'afficher uniquement les formules que j'ai installées sans les dépendances installées. Je veux avoir une liste de tous les programmes que j'ai réellement installés, sans le bruit des dépendances.

Je sais brew listquelle liste toutes les formules installées. Je sais aussi que cela brew graphme donne un graphe de dépendance dans legraphviz

Ou en d'autres termes: je souhaite disposer de l'ensemble minimal de formules pour réinstaller mon système.


la source
brew graph??? Je reçois Error: Unknown command: graph. Aucune commande de ce genre.
iconoclaste
brew graphsemble être un package que vous pouvez installer pour ce github.com/martido/brew-graph , voir aussi blog.jpalardy.com/posts/untangling-your-homebrew-dependencies
netweb

Réponses:

184

Utilisation brew leaves: affiche les formules installées qui ne sont pas des dépendances d'une autre formule installée.

Denis Barushev
la source
1
Merci! Cependant, cela montre mysqlque ce n'est requis par rien alors qu'il est réellement requis sur mon système par mysql-connector-c++. Savez-vous si c'est intentionnel (comme si vous brewgardez quelles formules sont installées directement non seulement si c'est une dépendance ou non)?
Haralan Dobrev
2
Oh, cela existe! FWIW cela peut être trouvé dans Library/Homebrew/cmd/leaves.rbet fait essentiellement ce que fait ma solution à l'exception de la gestion des dépendances optionnelles / recommandées ( deps << dep.name if tab.with?(dep.name)). @HaralanDobrev Cela explique très certainement le comportement en ce qui concerne mysqlvotre système et pourquoi la sortie diffère de ma solution, mais vous pouvez facilement vous adapter leaves.rbà votre goût.
Adrian Frühwirth
1
Super trouvaille. J'utilise brew ls --versions $( brew leaves )brew ls --versions $( brew leaves )également pour vider les versions.
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

Cela semble nous donner une liste de toutes les formules installées, y compris leurs dépendances. Nous pouvons construire une liste de toutes les formules et une liste de toutes les dépendances et soustraire les dépendances de la liste des formules, cela devrait nous donner une liste de formules qui ne sont pas des dépendances d'autres formules:

$ 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

Est-ce la sortie que vous recherchez?

Adrian Frühwirth
la source
1
Merci, cela fait le travail!
Haralan Dobrev
Merci pour votre scénario, mais j'ai trouvé que la réponse de Denis était meilleure. 1) C'est intégré. brewutilisé pour ne pas avoir une telle commande, mais maintenant que c'est le cas, il est préférable d'utiliser le. 2) Votre script montre bien gérer les dupes. Par exemple, si j'ai installé php55quelles installations, homebrew/dupes/zlibcela montrera zlibque ce n'est pas une dépendance, ce qui n'est pas vrai. À votre santé!
Haralan Dobrev
Pourquoi ne pas simplement utiliser cutsur la sortie? Voici un one liner:brew deps --installed | cut -d: -f1
mattmc3
@ mattmc3 Parce que cela ne fait pas la même chose et ne répond pas à la question / donne le résultat que OP a demandé.
Adrian Frühwirth
1
Cela devrait être la réponse acceptée. Je n'ai pas trouvé brew leavesutile.
Danyal Aytekin
3

cela montre les formules installées sous forme d'arborescence.

infusion - installé - arbre

Y. Özdemir
la source