Czy istnieje sposób, aby dowiedzieć się, która aplikacja / pakiet jest właścicielem lub tworzy określony plik? Na przykład w systemie Linux polecenia te pokażą właściciela pakietu
apt-file /bin/progname
rpm -qf /bin/progname
yum whatprovides /bin/progname
W OS X plik może być częścią natywnej aplikacji OS X lub być zainstalowany przez Macports lub Homebrew. Są to zupełnie inne środowiska. Czy istnieją polecenia dla każdego środowiska, aby sprawdzić, która aplikacja / pakiet jest właścicielem określonego pliku?
pkgutil --file-info /Applications/TextEdit.app
, a dostaniesz, że należy do com.apple.pkg.Essentials, ale również powie ci, które aktualizacje zostały zastosowane do niego (w moim przypadku 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).Nie jest to tak naprawdę możliwe, ponieważ nie ma standardowego zarządzania pakietami.
O ile MacPorts lub Homebrew nie skonfigurujesz inaczej, zawsze znajdziesz ich pliki wykonywalne w miejscu, którego nikt inny nie używa. Ponieważ MacPorts i Homebrew nie działają na osobnym koncie użytkownika, tworzone przez nich pliki zawsze będą własnością użytkownika lub użytkownika
root
.Pozostaje tylko to, że możesz zgadywać tylko na podstawie lokalizacji wykonywalnej. Oto kilka zasad:
MacPorts używa,
/opt/local/bin
a/opt/local/sbin
dla plików wykonywalnych - wszystko z prefiksem/opt/local
.Homebrew używa
/usr/local/bin
plików wykonywalnych, wszystko inne poniżej/usr/local/
.Inne aplikacje powinny gdzieś tworzyć własne katalogi
/usr
, np./usr/local/git/bin
Dla instalatora Git OS X lub/usr/X11/bin
X11.Niektóre frameworki systemowe symbolicznie wskazują na
/usr/bin
nprake
/System/Library/Frameworks/Ruby.framework
Żadna aplikacja nigdy nie powinna używać
/bin
lub/sbin
. Żadna aplikacja innej firmy (tj. Nic innego niż system OS X) nie powinna również używać/usr/bin
.źródło
pkgutil
i brzmi to całkiem przydatne.port provides FILE
Aby zebrać je w jednym miejscu dla dwóch innych menedżerów pakietów w OSX:
W przypadku MacPorts (jak wspomniał Neil w komentarzach powyżej):
W przypadku Brew nie jest to takie proste, ale zwykle można znaleźć pakiet za pomocą:
Który powinien pokazywać softlink zawierający nazwę pakietu, w przeciwnym razie można użyć innych sugestii z jednego z tych pytań .
źródło