Как я могу определить пакет/формулу для данного файла или список всех файлов, находящихся в пакете, в Homebrew?
Как найти пакет для установленного файла в Brew?
Ответ 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