Homebrew: แสดงรายการสูตรระดับบนสุดที่ติดตั้งไว้เท่านั้น


102

ฉันกำลังมองหาวิธีแสดงเฉพาะสูตรที่ฉันติดตั้งโดยไม่ต้องพึ่งพาการติดตั้ง ฉันต้องการมีรายชื่อโปรแกรมทั้งหมดที่ฉันติดตั้งจริงโดยไม่มีเสียงรบกวนจากการอ้างอิงทั้งหมด

ฉันรู้เกี่ยวกับbrew listรายการสูตรที่ติดตั้งทั้งหมด ฉันรู้ด้วยว่ามันbrew graphให้กราฟการอ้างอิงในไฟล์graphviz

หรือกล่าวอีกนัยหนึ่ง: ฉันต้องการมีชุดสูตรขั้นต่ำเพื่อติดตั้งระบบของฉันใหม่


brew graph??? ฉันเข้าใจError: Unknown command: graphแล้ว ไม่มีคำสั่งดังกล่าว
iconoclast

brew graphดูเหมือนจะเป็นแพ็คเกจที่คุณสามารถติดตั้งสำหรับgithub.com/martido/brew-graphนี้ได้โปรดดูที่blog.jpalardy.com/posts/untangling-your-homebrew-dependencies
netweb

คำตอบ:


184

ใช้brew leaves: แสดงสูตรที่ติดตั้งที่ไม่ใช่การอ้างอิงของสูตรอื่นที่ติดตั้ง


1
ขอบคุณ! อย่างไรก็ตามเรื่องนี้ก็แสดงให้เห็นราวกับว่ามันไม่จำเป็นต้องมาจากอะไรในขณะที่มันจำเป็นต้องใช้จริงในระบบของฉันโดยmysql mysql-connector-c++คุณบังเอิญรู้หรือไม่ว่านี่เป็นความตั้งใจ (เช่นหากbrewกำลังเก็บรักษาสูตรใดที่ติดตั้งไว้โดยตรงไม่เพียง แต่จะเป็น Depedency หรือไม่)
Haralan Dobrev

2
โอ้นี่มีอยู่จริง! FWIW สิ่งนี้สามารถพบได้ในLibrary/Homebrew/cmd/leaves.rbและโดยทั่วไปจะทำสิ่งที่โซลูชันของฉันทำยกเว้นการจัดการการอ้างอิงที่เป็นทางเลือก / ที่แนะนำ ( deps << dep.name if tab.with?(dep.name)) @HaralanDobrev สิ่งนี้อธิบายถึงพฤติกรรมที่เกี่ยวข้องmysqlกับระบบของคุณได้ดีที่สุดและเหตุใดผลลัพธ์จึงแตกต่างจากโซลูชันของฉัน แต่คุณสามารถปรับให้เข้าleaves.rbกับความชอบของคุณได้อย่างง่ายดาย
Adrian Frühwirth

1
การค้นพบที่ยอดเยี่ยม ฉันใช้brew ls --versions $( brew leaves )brew ls --versions $( brew leaves )เพื่อถ่ายโอนเวอร์ชันด้วย
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

ดูเหมือนว่าจะให้รายการสูตรที่ติดตั้งทั้งหมดรวมถึงการอ้างอิงด้วย เราสามารถสร้างรายการสูตรทั้งหมดและรายการของการอ้างอิงทั้งหมดและลบการอ้างอิงออกจากรายการสูตรซึ่งจะทำให้เรามีรายการสูตรที่ไม่ได้ขึ้นอยู่กับสูตรอื่น ๆ :

$ 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

นี่คือผลลัพธ์ที่คุณต้องการหรือไม่?


1
ขอบคุณงานนี้!
Haralan Dobrev

ขอบคุณสำหรับสคริปต์ของคุณ แต่ฉันพบคำตอบจากเดนิสจะดีกว่า 1) ในตัว brewเคยไม่มีคำสั่งดังกล่าว แต่ตอนนี้มันจะดีกว่าถ้าใช้ในตัว 2) สคริปต์ของคุณแสดงการจับคู่ได้ดี ตัวอย่างเช่นถ้าฉันได้ติดตั้งphp55ซึ่งการติดตั้งhomebrew/dupes/zlibมันจะแสดงzlibว่ามันไม่ใช่การพึ่งพาซึ่งไม่เป็นความจริง ไชโย!
Haralan Dobrev

ทำไมไม่ใช้เพียงแค่cutเอาท์พุท? นี่คือซับเดียว:brew deps --installed | cut -d: -f1
mattmc3

@ mattmc3 เพราะนั่นไม่ได้ทำแบบเดียวกันและไม่ตอบคำถาม / ให้ผลลัพธ์ที่ OP ถาม
Adrian Frühwirth

1
นี่ควรเป็นคำตอบที่ได้รับการยอมรับ ฉันไม่พบว่าbrew leavesมีประโยชน์
Danyal Aytekin

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.