Como posso abrir um arquivo .pkg manualmente?

60

Alguns aplicativos vêm em arquivos .pkg e solicitam sua senha de administrador, mesmo que tudo o que eles façam seja copiar o binário em / Applications.

Eu gosto de ter meus aplicativos em ~ / Applications e não gosto de dar permissões administrativas para qualquer coisa que não seja da nave-mãe.

Existe uma maneira de abrir manualmente o arquivo .pkg e retirar o aplicativo? Existe o PackageMaker nas Ferramentas do desenvolvedor, mas isso parece não acontecer (ele produziu alguma saída que me faz pensar que realmente não há scripts ou outras partes no instalador, apenas no aplicativo).

Thilo
fonte
2
Tente unpkg .
lhf 12/07

Respostas:

67

Se você clicar com o botão direito do mouse e clicar em Mostrar Conteúdo do Pacote, você obterá alguns arquivos em uma pasta Conteúdo. (Nota: se você não vir Mostrar conteúdo do pacote, será necessário abrir o Terminal.app e executar pkgutil --expand mystubbornpackage.pkg path/to/expand)

Um é um arquivo de lista técnica (lista de materiais) que é transformado em um recibo que você pode usar para desinstalar o aplicativo. Este arquivo contém um manifesto de tudo o que o pacote instalará e para onde; Para ler este arquivo, use o comando lsbom .

A maioria dos pacotes (estou usando o Office 2008 aqui) também possui um arquivo Archive.pax.gz, que contém tudo o que o Instalador moverá para as várias pastas, conforme as instruções no arquivo BOM. A maioria dos aplicativos parece ter o .app nesse arquivo, embora arrastá-lo para / Applications possa deixá-lo sem estruturas que ele precise executar; então você terá que descobrir quais outros arquivos ele precisa e onde eles precisam para que eles funcionem.

Além disso, todos os pacotes podem registrar mensagens; se você pressionar Cmd-L (ou escolher a opção Log do Instalador no menu Janela , poderá visualizá-las conforme são geradas. Isso pode lhe dar uma idéia de quais itens extras estão sendo instalados, pelo menos são mais algumas informações se você não confiar no pacote.

Mathew Hall
fonte
3
Não recebo "Mostrar conteúdo do pacote" no menu do botão direito.
Th
3
@ Thilo Se você não está recebendo a opção "Mostrar conteúdo do pacote", o arquivo pkg foi criado como arquivo simples. Apple introduziu pkg-estilo plano é um par de anos atrás
nome de usuário
@username: Então, como eu os abro?
Thilo
10
pkgutilvai fazer isso. Você pode expandi-lo usando pkgutil --expand file.pkg path_to_expande ele será convertido em um pacote de estilo de diretório.
Mathew Hall
@username, o que significa "flat"?
Pacerier
34

Além do que Matthew Hall disse, você também pode pressionar Cmd-I no aplicativo Installer para ver quais arquivos o instalador instalará e onde.

CajunLuke
fonte
3
+1. Com isso, pude verificar rapidamente se existe apenas o binário do aplicativo, nenhum outro material em todo o sistema.
Th
7

Se você não confia no instalador o suficiente para fornecer permissões administrativas para instalar, por que você confia no binário em / Aplicativos?

O Pacifist permitirá que você procure nos arquivos do pacote. Isso não necessariamente permite que você "retire o binário".

ghoppe
fonte
1
Também não confio no binário. Eu nunca quero conceder permissões administrativas (que não seriam necessárias de qualquer maneira).
Th
3
Contanto que você não execute o aplicativo a partir de qualquer usuário que tenha privilégios de administrador, sua confiança será mantida. Não esqueça que mesmo um aplicativo no nível do usuário pode fazer solicitações de processos no nível do administrador, portanto, é muito trabalhoso executar aplicativos nos quais você não confia.
bmike
@ghoppe, é porque os padrões às vezes não são otimizados para os usuários, mas para os criadores do aplicativo. Por exemplo, em vez de instalar todo o lixo de instalação que vem por padrão, posso optar por pegar apenas os arquivos que são essenciais. Por exemplo, ao baixar Mysql / Java / etc.
Pacerier
4

Como alternativa, você pode tentar,

sudo installer -pkg ~/Downloads/packagename.pkg -target ~/Applications/

OU

installer -pkg ~/Downloads/packagename.pkg -target ~/Applications/
carmático
fonte
Infelizmente, isso não funcionou. Ele ainda insistiu em "Instalando no caminho base /" e pediu a senha do administrador.
Thilo
1
É possível instalar em uma imagem de disco criada com algo como hdiutil create -size 200m -fs HFS+ -volname Scratch scratch.dmge copiar os arquivos para os locais de sua preferência. Você ainda precisa do sudo para executar o instalador, infelizmente.
mjs
2
  1. Depois de conseguir abrir o pacote, procure o arquivo Archive.pax.gz mencionado anteriormente.

  2. Crie uma nova pasta vazia na área de trabalho, nomeando-a como desejar. Eu geralmente os nomeio "xxxx" ou "zzzz" etc. para facilitar a digitação mais tarde.

  3. Arraste com uma opção e uma cópia do arquivo Archive.pax.gz para essa nova pasta "xxxx" na área de trabalho.

    Se o arquivo estiver dentro da mídia somente leitura, basta arrastá-lo para a pasta "xxxx" sem a tecla Opção para criar uma cópia.

  4. Agora abra o Terminal.app e, na linha de comando, navegue até o novo diretório "xxxx" e liste o conteúdo do diretório para confirmar se o seu arquivo Archive.pax.gz está lá:

    cd ~/Desktop/xxxx
    ls -al
    
  5. Agora, existem dois comandos simples para inserir:

    gunzip -v Archive.pax.gz
    

    O Gzip informará que ele substituiu "Archive.pax.gz" por "Archive.pax"). Agora liste o conteúdo do diretório novamente para confirmar isso.

    pax -r -f Archive.pax
    

    (Você deve separar -re -f, como -rfnão funcionará)

  6. Por fim, liste o conteúdo do diretório novamente com ls -al. Além do arquivo Archive.pax, agora você verá uma hierarquia de diretórios provavelmente contendo um ou mais diretórios.

    Os arquivos nessa hierarquia de diretórios ilustrarão para você onde o instalador do OS X instalaria arquivos no seu sistema como se o diretório "xxxx" fosse o diretório raiz "/".

  7. Você pode copiar manualmente esses arquivos para seus destinos, se desejar.

stargood
fonte
3
Em outras palavras cd ~/Desktop; cp Package.pkg/Contents/Archive.pax.gz .; gunzip -v Archive.pax.gz; pax -r -f Archive.pax. Você não precisa descrever tudo nesse nível de detalhe.
Lri 14/08
6
Lri, forneci essa quantidade de detalhes para que usuários de qualquer nível de conhecimento pudessem segui-lo e ter sucesso. Concedido, sua versão enigmática alcançaria os mesmos resultados. No entanto, outros usuários que estão lendo isso no futuro e que podem não estar familiarizados com a linha de comando podem ficar irremediavelmente perdidos.
stargood
1

pkgutil --expand estava falhando para mim com o seguinte erro:

Error encountered while creating .. Error 17: File exists

Mas eu consegui extrair os arquivos com xar:

xar -xvf foo.pkg

gregschlom
fonte
1
isso funciona para mim. mas, aparentemente, se você der ao pkgutil um diretório inexistente como destino, o erro 17 desaparecerá.
Michael
1

A melhor ferramenta para inspecionar arquivos de pacotes é o Pacote Suspeito . Também permite copiar arquivos do pacote.

Além de fornecer todas as informações necessárias no aplicativo, ele também instala um plug-in Quick Look; basta selecionar o arquivo do pacote e pressionar a barra de espaço para abrir uma janela com as informações mais essenciais.

Tony Williams
fonte
0

O desarquivador pode fazer isso; fará o mesmo, pkgutil --expandmas usando arrastar e soltar. É um substituto melhor para o Archive Utility.app da Apple de qualquer maneira.

Quinn Comendant
fonte
0

UnArchiver fez o truque.

Instale o UnArchiver, abra o UnArchiver; enquanto estiver aberto - clique duas vezes nessa traquinaMAMP_MAMP_3.5.pkg

Siga as etapas para instalar o MAMP.

Blll
fonte