Homebrew: enumera solo las fórmulas de nivel superior instaladas

102

Estoy buscando una forma de mostrar solo las fórmulas que instalé sin las dependencias instaladas. Quiero tener una lista de todos los programas que realmente instalé, sin todo el ruido de las dependencias.

brew listcuál enumera todas las fórmulas instaladas. También sé que brew graphme da un gráfico de dependencia en elgraphviz

O en otras palabras: quiero tener el conjunto mínimo de fórmulas para reinstalar mi sistema.


fuente
brew graph??? Yo entiendo Error: Unknown command: graph. No hay tal comando.
iconoclasta
brew graphparece ser un paquete que puede instalar para este github.com/martido/brew-graph , consulte también blog.jpalardy.com/posts/untangling-your-homebrew-dependencies
netweb

Respuestas:

179

Uso brew leaves: muestra fórmulas instaladas que no son dependencias de otra fórmula instalada.

Denis Barushev
fuente
1
¡Gracias! Sin embargo, esto se muestra mysqlcomo si nada lo requiriera, mientras que en realidad lo requiere mi sistema mysql-connector-c++. ¿Sabe si esto es intencional (como si brewse mantiene qué fórmulas se instalan directamente, no solo si es una dependencia o no)?
Haralan Dobrev
2
¡Oh, esto existe! FWIW, esto se puede encontrar Library/Homebrew/cmd/leaves.rby básicamente hace lo que hace mi solución con la excepción del manejo de dependencias opcionales / recomendadas ( deps << dep.name if tab.with?(dep.name)). @HaralanDobrev Esto sin duda explica el comportamiento con respecto a mysqlsu sistema y por qué la salida difiere de mi solución, pero puede adaptarse fácilmente leaves.rba su gusto.
Adrian Frühwirth
1
Gran hallazgo. Yo también uso brew ls --versions $( brew leaves )brew ls --versions $( brew leaves )para volcar las versiones.
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

Esto parece darnos una lista de todas las fórmulas instaladas, incluidas sus dependencias. Podemos construir una lista de todas las fórmulas y una lista de todas las dependencias y restar las dependencias de la lista de fórmulas, esto debería darnos una lista de fórmulas que no son dependencias de otras 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

¿Es este el resultado que buscas?

Adrian Frühwirth
fuente
1
¡Gracias, esto funciona!
Haralan Dobrev
Gracias por tu guión, pero encontré que la respuesta de Denis es mejor. 1) Está integrado. brewsolía no tener un comando de este tipo, pero ahora que lo tiene, es mejor usar el archivo integrado. 2) Su guión muestra bien a los incautos. Por ejemplo, si instalé php55qué instalaciones homebrew/dupes/zlib, se mostrará zlibcomo si no fuera una dependencia, lo cual no es cierto. ¡Salud!
Haralan Dobrev
¿Por qué no usarlo cuten la salida? Aquí hay una sola línea:brew deps --installed | cut -d: -f1
mattmc3
@ mattmc3 Porque eso no hace lo mismo y no responde a la pregunta / produce el resultado que OP pidió.
Adrian Frühwirth
1
Esta debería ser la respuesta aceptada. No me pareció brew leavesútil.
Danyal Aytekin
3

esto muestra las fórmulas instaladas como un árbol.

brew deps --instalado --árbol

Y. Özdemir
fuente