Como descobrir se um arquivo pertence a qual pacote no Mac OS X?

7

Existe uma maneira de descobrir qual aplicativo / pacote possui ou cria um arquivo específico? Por exemplo, no Linux, esses comandos mostrarão o proprietário do pacote

apt-file /bin/progname

rpm -qf /bin/progname

yum whatprovides /bin/progname

No OS X, um arquivo pode fazer parte de um aplicativo nativo OS X ou instalado pela Macports ou Homebrew. Estes são ambientes completamente diferentes. Existem comandos para cada ambiente para verificar qual aplicativo / pacote possui um arquivo específico?

    
por hanxue 25.09.2013 / 11:45

3 respostas

17

É um pouco tarde, mas talvez seja de ajuda para os outros.

Você pode usar o comando pkgutil .

Por exemplo, se você quiser saber a que pacote o comando "menos" pertence para ser executado:

pkgutil --file-info /usr/bin/less

Que produzirá algo como:

volume: /
path: /usr/bin/less

pkgid: com.apple.pkg.BaseSystemBinaries
pkg-version: 10.7.0.1.1.1309742044
install-time: 1310407891
uid: 0
gid: 0
mode: 755

Para listar todos os arquivos contidos em um pacote, com.apple.pkg.BaseSystemBinaries em nosso exemplo, execute:

pkgutil --files com.apple.pkg.BaseSystemBinaries

Eu sei que esta ferramenta está presente desde o OS X 10.6.

    
por 20.03.2015 / 02:39
4

Isso não é realmente possível, já que não há gerenciamento padronizado de pacotes.

A menos que você configure MacPorts ou Homebrew de maneira diferente, sempre encontrará seus executáveis em um local que ninguém mais usa. Como MacPorts e Homebrew não são executados em uma conta de usuário separada, os arquivos criados por eles sempre pertencerão ao usuário ou root .

O que resta é que você só pode tentar adivinhar com base no local do executável. Aqui estão algumas regras:

  • O MacPorts usa /opt/local/bin e /opt/local/sbin para executáveis, tudo prefixado em /opt/local .

  • O Homebrew usa /usr/local/bin para executáveis, todo o restante em /usr/local/ .

  • Outros aplicativos devem criar seus próprios diretórios em algum lugar em /usr , por exemplo, /usr/local/git/bin para o instalador do Git OS X ou /usr/X11/bin para o X11.

  • Algumas estruturas de sistema são vinculadas a /usr/bin , por exemplo rake aponta para /System/Library/Frameworks/Ruby.framework

  • Nenhum aplicativo deve usar /bin ou /sbin . Nenhuma aplicação de terceiros (ou seja, qualquer coisa que não seja uma estrutura do OS X) deve usar /usr/bin .

por 25.09.2013 / 12:41
0

Para coletá-los em um lugar para os outros dois gerenciadores de pacotes no OSX:

Para MacPorts (como mencionado por Neil nos comentários acima):

port provides /opt/local/bin/progname

Para Brew , não é tão simples, mas geralmente é possível encontrar o pacote usando:

ls -la /usr/local/bin/progname

O que deve mostrar um link que contenha o nome do pacote, ou então pode-se usar outras sugestões de um destes perguntas .

    
por 05.01.2017 / 14:16