Homebrew: Hanya daftar formula tingkat atas yang diinstal

102

Saya mencari cara untuk hanya menampilkan rumus yang saya instal tanpa dependensi yang diinstal. Saya ingin memiliki daftar semua program yang sebenarnya saya instal, tanpa semua gangguan dependensi.

Saya tahu tentang brew listdaftar mana semua formula yang diinstal. Saya juga tahu bahwa itu brew graphmemberi saya grafik ketergantungan digraphviz

Atau dengan kata lain: Saya ingin memiliki sekumpulan rumus minimal untuk menginstal ulang sistem saya.


sumber
brew graph??? Saya mengerti Error: Unknown command: graph. Tidak ada perintah seperti itu.
iconoclast
brew graphtampaknya menjadi paket yang dapat Anda instal untuk github.com/martido/brew-graph ini , lihat juga blog.jpalardy.com/posts/untangling-your-homebrew-dependencies
netweb

Jawaban:

183

Gunakan brew leaves: Perlihatkan rumus terinstal yang bukan dependensi dari rumus terinstal lain.

Denis Barushev
sumber
1
Terima kasih! Namun ini menunjukkan mysqlseolah-olah itu tidak diperlukan oleh apa pun sementara itu sebenarnya diperlukan di sistem saya oleh mysql-connector-c++. Apakah Anda kebetulan tahu apakah ini disengaja (seperti apakah brewmenjaga formula mana yang diinstal secara langsung tidak hanya jika itu ketergantungan atau tidak)?
Haralan Dobrev
2
Oh, ini ada! FWIW ini dapat ditemukan di Library/Homebrew/cmd/leaves.rbdan pada dasarnya melakukan apa yang dilakukan solusi saya dengan pengecualian penanganan dependensi opsional / yang direkomendasikan ( deps << dep.name if tab.with?(dep.name)). @HaralanDobrev Ini pasti menjelaskan perilaku yang berkaitan dengan mysqldi sistem Anda dan mengapa keluaran berbeda dari solusi saya, tetapi Anda dapat dengan mudah menyesuaikan leaves.rbdengan keinginan Anda.
Adrian Frühwirth
1
Great ditemukan. Saya gunakan brew ls --versions $( brew leaves )brew ls --versions $( brew leaves )untuk juga membuang versi.
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

Ini sepertinya memberi kita daftar semua formula yang diinstal termasuk dependensinya. Kita dapat membuat daftar semua rumus dan daftar semua dependensi dan mengurangkan dependensi dari daftar rumus, ini akan memberi kita daftar rumus yang bukan merupakan dependensi dari rumus lain:

$ 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

Apakah ini hasil yang Anda cari?

Adrian Frühwirth
sumber
1
Terima kasih, ini berhasil!
Haralan Dobrev
Terima kasih atas naskah Anda, tetapi saya telah menemukan jawaban dari Denis lebih baik. 1) Ini ada di dalamnya. brewdulu tidak memiliki perintah seperti itu, tetapi sekarang setelah itu lebih baik menggunakan built-in. 2) Skrip Anda memang menunjukkan pegangan dupes dengan baik. Misalnya jika saya telah menginstal php55instalasi mana yang homebrew/dupes/zlibakan ditampilkan zlibseperti itu bukan ketergantungan yang tidak benar. Bersulang!
Haralan Dobrev
Mengapa tidak digunakan cutpada output saja? Ini satu brew deps --installed | cut -d: -f1
kalimat
@ mattmc3 Karena itu tidak melakukan hal yang sama dan tidak menjawab pertanyaan / menghasilkan ouput yang ditanyakan OP.
Adrian Frühwirth
1
Ini harus menjadi jawaban yang diterima. Saya tidak menemukan brew leaveshal yang berguna.
Danyal Aytekin
3

ini menunjukkan rumus yang diinstal sebagai pohon.

brew deps --installed --tree

Y. Özdemir
sumber