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

답변:


181

사용 brew leaves: 설치된 다른 공식의 종속성이 아닌 설치된 공식을 표시합니다.


1
감사! 그러나 이것은 mysql실제로 내 시스템에서 mysql-connector-c++. 이것이 의도적 인 것인지 아십니까 (예를 들어 brew, 복종 여부뿐 아니라 직접 설치된 공식을 유지하는 경우)?
Haralan Dobrev

2
오, 존재합니다! FWIW는에서 찾을 수 있으며 Library/Homebrew/cmd/leaves.rb기본적으로 선택적 / 권장 종속성 처리 ( deps << dep.name if tab.with?(dep.name))를 제외하고 내 솔루션이 수행하는 작업을 수행합니다 . @HaralanDobrev 이것은 mysql시스템과 관련된 동작과 출력이 내 솔루션과 다른 이유 를 가장 확실하게 설명 하지만 leaves.rb원하는대로 쉽게 조정할 수 있습니다 .
Adrian Frühwirth 2014

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

대본을 보내 주셔서 감사합니다.하지만 Denis의 답변이 더 낫다는 것을 발견했습니다. 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.