Подтвердить что ты не робот

Как найти пакет для установленного файла в Brew?

Как я могу определить пакет/формулу для данного файла или список всех файлов, находящихся в пакете, в Homebrew?

4b9b3361

Ответ 1

Чтобы просмотреть все файлы в пакете:

brew ls <package>

Чтобы найти пакет для файла, посмотрите на файл следующим образом:

ls -l /usr/local/bin/whatever

Если он был установлен с помощью Homebrew, он будет символической ссылкой в ​​ /usr/local/Cellar/something, поэтому он скажет вам, из какого пакета он.

Ответ 2

Просто написал эту грязную функцию, чтобы получить имя пакета brew, к которому принадлежит файл:

function brew_find_pkg {
    file_to_search="[email protected]"

    for package in $(brew list); do
        brew ls $package | grep -E -q "/${file_to_search}$"
        if [ $? -eq 0 ]; then
            echo $package
            break
        fi
    done
}

Просто введите это в терминале. А затем, чтобы найти пакет brew, к gsed принадлежит файл, скажем, файл gsed, просто вызовите такую функцию

brew_find_pkg gsed

Обратите внимание, что функция не будет работать, если вы укажете полный путь к файлу.

Ответ 3

Название пакета может быть определено на основе символической ссылки, которая указывает на двоичный файл (Cellar/PACKAGE/...), например

$ ls -la $(which awk) # => gawk
lrwxr-xr-x 1 kenorb 28 May 20  2015 /usr/local/bin/awk -> ../Cellar/gawk/4.1.1/bin/awk

$ ls -la $(which seq) # => coreutils
lrwxr-xr-x 1 kenorb 14 Apr  8  2015 /usr/local/opt/coreutils/libexec/gnubin/seq -> ../../bin/gseq

Ответ 4

Эта функция работает для команд, хранящихся в каталоге $( brew --prefix )/bin.

function brew_find_pkg {

    cmds_to_search="[email protected]"
    brew_bin=$( brew --prefix )/bin

    for cmd in $cmd_to_search ; do

        if [ -L $brew_bin/$cmd ] ; then
            \ls -l $brew_bin/$cmd |cut -f 2 -d '>'
        else
            echo "$cmd is not a brew command"
        fi
    done
}

Например:

$ brew_find_pkg gawk gcc alskdfja
 ../Cellar/gawk/4.1.4_1/bin/gawk
 ../Cellar/gcc/5.3.0/bin/gcc
alskdfja is not a brew command

Ответ 5

Найти и brew префикс (например, для opencv):

find `brew --prefix opencv3`/ -exec ls -l {} \;

(Обратите внимание на разумное использование -exec и никогда не забывайте тех \;, ребята.. его, как find, знает, что завершен список -exec..)

Ответ 6

Пакеты Homebrew устанавливаются в $ (brew --prefix)/Cellar (обычно /usr/local/Cellar).

Чтобы выяснить, к каким пакетам принадлежит файл, существует один простой подход:

$ find $(brew --prefix)/Cellar/ | grep somefilename