
Есть ли способ выяснить, какой brew
пакет предоставляет данный файл (как apt-file
в Ubuntu или pkgfile
/ pacman -F
в Arch)?
Я не говорю о запросе того, какой локально установленный пакет владеет файлом в моей системе. У меня есть определенный файл, который мне нужно установить ( /usr/local/lib/libboost_python.dylib
если быть точным), и я хочу узнать, какой удаленный пакет предоставит этот файл.
решение1
Нет. Ничто в Homebrew не хранит список файлов, которые пакету разрешено или ожидается установить.
решение2
Как указано в этомотвечатьвы можете сделать это ls -l /usr/local//lib/whatever
и посмотреть, куда указывает символическая ссылка.
решение3
Хотя встроенной brew
команды для поиска определенного файла нет, вы можете использовать комбинацию brew list
и brew list <formula>
для получения ответа. Это займет некоторое время, но если вы делаете какую-то очистку и вам нужно ответить на этот тип запроса больше одного раза, вы можете сделать то, что я иногда делал: создать каталог файлов по пакету:
#!/bin/sh
# make a catalog of Homebrew-installed packages by package
brew list --formula |\
while read formula; do
brew list $formula |\
while read file; do
echo -e "$formula\t$file" # need -e to expand \t
done
done
Если перенаправить вывод этого скрипта в файл, его можно использовать для поиска пакета, предоставляющего интересующий файл.
решение4
Вот однострочный текст, который есть в моем bin
справочнике именно для этой цели:
$ cat ~/bin/brewpkg
#!/bin/bash
which -s $1 ; if [ $? -eq 0 ] ; then ls -lF `which $1` | sed -n 's/^.*\/Cellar\/\([^\/]\{1,\}\)\/.*$/\1/ p' ; fi