Homebrew: lista apenas as fórmulas de nível superior instaladas

102

Estou procurando uma maneira de mostrar apenas as fórmulas que instalei sem as dependências instaladas. Quero ter uma lista de todos os programas que realmente instalei, sem todo o ruído das dependências.

Eu sei sobre brew listqual lista todas as fórmulas instaladas. Eu também sei que isso brew graphme dá um gráfico de dependência nographviz

Ou em outras palavras: quero ter o conjunto mínimo de fórmulas para reinstalar meu sistema.


fonte
brew graph??? Eu entendo Error: Unknown command: graph. Não existe tal comando.
iconoclasta
brew graphparece ser um pacote que você pode instalar para este github.com/martido/brew-graph , consulte também blog.jpalardy.com/posts/untangling-your-homebrew-dependencies
netweb

Respostas:

179

Uso brew leaves: mostra as fórmulas instaladas que não são dependências de outra fórmula instalada.

Denis Barushev
fonte
1
Obrigado! No entanto, isso mostra mysqlcomo se não fosse exigido por nada, embora seja realmente necessário no meu sistema por mysql-connector-c++. Por acaso você sabe se isso é intencional (por exemplo, brewmanter quais fórmulas são instaladas diretamente, não apenas se é uma dependência ou não)?
Haralan Dobrev
2
Oh, isso existe! FWIW isso pode ser encontrado em Library/Homebrew/cmd/leaves.rbe basicamente faz o que minha solução faz, com exceção do tratamento de dependências opcionais / recomendadas ( deps << dep.name if tab.with?(dep.name)). @HaralanDobrev Isso certamente explica o comportamento em relação ao mysqlseu sistema e por que a saída é diferente da minha solução, mas você pode facilmente adaptar leaves.rbao seu gosto.
Adrian Frühwirth
1
Ótimo achado. Eu brew ls --versions $( brew leaves )brew ls --versions $( brew leaves )também costumo descartar as versões.
Mike D de
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

Isso parece nos dar uma lista de todas as fórmulas instaladas, incluindo suas dependências. Podemos construir uma lista de todas as fórmulas e uma lista de todas as dependências e subtrair as dependências da lista de fórmulas, isso deve nos dar uma lista de fórmulas que não são dependências de outras fórmulas:

$ 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

É esta a saída que você procura?

Adrian Frühwirth
fonte
1
Obrigado, isso faz o trabalho!
Haralan Dobrev
Obrigado pelo seu roteiro, mas descobri que a resposta do Denis é melhor. 1) Está embutido. brewcostumava não ter esse comando, mas agora que tem, é melhor usar o integrado. 2) Seu script mostra bem os ladrões. Por exemplo, se eu instalei php55quais instalações, homebrew/dupes/zlibisso vai mostrar zlibque não é uma dependência, o que não é verdade. Felicidades!
Haralan Dobrev
Por que não usar apenas cutna saída? Aqui está um forro:brew deps --installed | cut -d: -f1
mattmc3
@ mattmc3 Porque isso não faz a mesma coisa e não responde à pergunta / produz a saída que o OP perguntou.
Adrian Frühwirth
1
Esta deve ser a resposta aceita. Eu não achei brew leavesútil.
Danyal Aytekin
3

isso mostra as fórmulas instaladas como uma árvore.

brew deps --instalado --tree

Y. Özdemir
fonte