Есть ли способ узнать, какое приложение / пакет владеет или создает определенный файл? Например, в Linux эти команды покажут владельца пакета
apt-file /bin/progname
rpm -qf /bin/progname
yum whatprovides /bin/progname
В OS X файл может быть частью собственного приложения OS X или установлен Macports или Homebrew. Это совершенно разные среды. Существуют ли команды для каждой среды, чтобы проверить, какому приложению / пакету принадлежит определенный файл?
pkgutil --file-info /Applications/TextEdit.app
, и вы получите, что он принадлежит com.apple.pkg.Essentials, но также скажет вам, какие средства обновления были применены к нему (в моем случае, com.apple.pkg.update.os.10.10.2.14C109 .patch, com.apple.pkg.update.os.10.10.3.14D131.delta, com.apple.pkg.update.os.10.9.2.13C64.combo).На самом деле это невозможно, поскольку нет стандартизированного управления пакетами.
Если вы не настроили MacPorts или Homebrew по-другому, вы всегда найдете их исполняемые файлы в месте, которое никто другой не использует. Поскольку MacPorts и Homebrew не запускаются под отдельной учетной записью пользователя, созданные ими файлы всегда будут принадлежать вашему пользователю или
root
.Осталось только попытаться угадать, основываясь на исполняемом местоположении. Вот несколько правил:
MacPorts использует
/opt/local/bin
и/opt/local/sbin
для исполняемых файлов, все с префиксом/opt/local
.Доморощенный использует
/usr/local/bin
для исполняемых файлов, все остальное под/usr/local/
.Другие приложения должны создавать свои собственные каталоги где-то под
/usr
, например,/usr/local/git/bin
для установщика Git OS X или/usr/X11/bin
для X11.Некоторые системные фреймворки имеют символическую ссылку
/usr/bin
, например,rake
указывают на/System/Library/Frameworks/Ruby.framework
Ни одно приложение никогда не должно использовать
/bin
или/sbin
. Никакое стороннее приложение (то есть что-либо, не являющееся платформой OS X) также не должно использовать/usr/bin
.источник
pkgutil
ни об этом , и это звучит довольно удобно.port provides FILE
Чтобы собрать их в одном месте для двух других менеджеров пакетов в OSX:
Для MacPorts (как упомянуто Нейлом в комментариях выше):
Для Brew это не так просто, но обычно можно найти пакет, используя:
Который должен показывать программную ссылку, содержащую имя пакета, иначе можно воспользоваться другими предложениями из одного из этих вопросов .
источник