Homebrew: elenca solo le formule di primo livello installate


102

Sto cercando un modo per mostrare solo le formule che ho installato senza le dipendenze installate. Voglio avere un elenco di tutti i programmi che ho effettivamente installato, senza tutto il rumore delle dipendenze.

So su brew listquali elenchi tutte le formule installate. So anche che brew graphmi fornisce un grafico delle dipendenze ingraphviz

O in altre parole: voglio avere il set minimo di formule per reinstallare il mio sistema.


brew graph??? Capisco Error: Unknown command: graph. Nessun tale comando.
iconoclasta

brew graphsembra essere un pacchetto che puoi installare per questo github.com/martido/brew-graph , vedi anche blog.jpalardy.com/posts/untangling-your-homebrew-dependencies
netweb

Risposte:


179

Usa brew leaves: mostra le formule installate che non sono dipendenze di un'altra formula installata.


1
Grazie! Tuttavia questo mostra mysqlcome se non fosse richiesto da nulla mentre è effettivamente richiesto sul mio sistema da mysql-connector-c++. Ti capita di sapere se questo è intenzionale (come se brewsi mantenga quali formule sono installate direttamente non solo se è una dipendenza o no)?
Haralan Dobrev

2
Oh, questo esiste! FWIW può essere trovato in Library/Homebrew/cmd/leaves.rbe fondamentalmente fa quello che fa la mia soluzione con l'eccezione della gestione delle dipendenze opzionali / consigliate ( deps << dep.name if tab.with?(dep.name)). @HaralanDobrev Questo spiega sicuramente il comportamento rispetto a mysqlsul tuo sistema e perché l'output è diverso dalla mia soluzione, ma puoi facilmente adattarti leaves.rba tuo piacimento.
Adrian Frühwirth

1
Ottima scoperta. Uso brew ls --versions $( brew leaves )brew ls --versions $( brew leaves )anche per scaricare le versioni.
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

Questo sembra darci un elenco di tutte le formule installate comprese le loro dipendenze. Possiamo costruire un elenco di tutte le formule e un elenco di tutte le dipendenze e sottrarre le dipendenze dall'elenco delle formule, questo dovrebbe darci un elenco di formule che non sono dipendenze di altre formule:

$ 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

È questo l'output che stai cercando?


1
Grazie, questo fa il lavoro!
Haralan Dobrev

Grazie per la sceneggiatura, ma ho trovato migliore la risposta di Denis. 1) È integrato. brewutilizzato per non avere un tale comando, ma ora che lo fa è meglio usare il built-in. 2) Il tuo script mostra bene i duplicati. Ad esempio, se ho installato php55quali installazioni homebrew/dupes/zlibverrà visualizzato zlibcome se non fosse una dipendenza che non è vero. Saluti!
Haralan Dobrev

Perché non usarlo solo cutsull'output? Ecco una battuta:brew deps --installed | cut -d: -f1
mattmc3

@ mattmc3 Perché questo non fa la stessa cosa e non risponde alla domanda / restituisce il risultato che OP ha chiesto.
Adrian Frühwirth

1
Questa dovrebbe essere la risposta accettata. Non ho trovato brew leavesutile.
Danyal Aytekin

3

questo mostra le formule installate come un albero.

brew deps --installed --tree

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.