¿Cómo puedo abrir un archivo .pkg manualmente?

Algunas aplicaciones vienen en archivos .pkg y solicitan su contraseña de administrador, incluso si todo lo que hacen es copiar el archivo binario a /Aplicaciones.

Me gusta tener mis aplicaciones en ~/Applications, y no me gusta dar permisos administrativos a nada que no sea de la nave nodriza.

¿Hay alguna manera de que pueda abrir manualmente el archivo .pkg y sacar la aplicación? Hay PackageMaker en Developer Tools, pero eso no parece funcionar (produjo algunos resultados que me hacen pensar que realmente no hay scripts u otras piezas en el instalador, solo la aplicación).

Respuestas (9)

Si hace clic con el botón derecho en él y hace clic en Mostrar contenido del paquete , obtendrá algunos archivos en una carpeta Contenido. (Nota: si no ve Mostrar contenido del paquete , deberá abrir Terminal.app y ejecutar pkgutil --expand mystubbornpackage.pkg path/to/expand)

Uno es un archivo BOM (lista de materiales) que se convierte en un recibo que puede usar para desinstalar la aplicación. Este archivo contiene un manifiesto de todo lo que instalará el paquete y dónde; para leer este archivo, use el comando lsbom .

La mayoría de los paquetes (estoy usando Office 2008 aquí) también tienen un archivo Archive.pax.gz, que contiene todo lo que el instalador moverá a las distintas carpetas como se indica en el archivo BOM. La mayoría de las aplicaciones parecen tener el .app en este archivo, aunque arrastrarlo a /Aplicaciones puede dejarlo sin los marcos que necesita para ejecutarse; por lo que tendrá que averiguar qué otros archivos necesita y dónde los necesita para que funcione.

Además, todos los paquetes pueden registrar mensajes, si presiona Cmd-L (o elige la opción Registro del instalador en el menú Ventana , puede verlos a medida que se generan. Esto podría darle una idea de qué cosas adicionales está instalando, al final). por lo menos, es más información si no confía en el paquete.

No aparece "Mostrar contenido del paquete" en el menú contextual.
@Thilo Si no obtiene la opción "Mostrar contenido del paquete", entonces el archivo pkg se creó como un archivo plano. Apple presentó paquetes de estilo plano hace un par de años
@username: Entonces, ¿cómo los abro?
pkgutillo haré. Puede expandirlo usando pkgutil --expand file.pkg path_to_expandy lo convertirá en un paquete de estilo de directorio.
@username, ¿Qué significa "plano"?
@MathewHall, ¿pkgutil, unpkg, SuspiciousPackage y Pacifist muestran todos el mismo resultado?
Confusamente, muchas veces los archivos pkg "planos" parecen contener archivos pkg "no planos".
Nota: use --expand-fullpara extraer el archivo "Carga útil" si lo tiene stackoverflow.com/questions/41166805/…

Además de lo que dijo Matthew Hall, también puede presionar Cmd-I en la aplicación Installer para ver qué archivos instalará el instalador y dónde.

+1. Con esto, pude verificar rápidamente que solo hay el binario de la aplicación allí, no hay otras cosas en todo el sistema.

Si no confía lo suficiente en el instalador para otorgar permisos administrativos para instalar, ¿por qué confía en el binario en /Aplicaciones?

Pacifist le permitirá buscar en los archivos del paquete. Esto no necesariamente le permite "sacar el binario".

Tampoco confío en el binario. Quiero nunca darle permisos administrativos (que no debería necesitar de todos modos).
Mientras no ejecute la aplicación desde ningún usuario que tenga privilegios de administrador, se mantendrá su confianza. No olvide que incluso una aplicación de nivel de usuario puede realizar solicitudes desde procesos de nivel de administrador, por lo que es mucho trabajo ejecutar aplicaciones en las que realmente no confía.
@ghoppe, es porque los valores predeterminados a veces no están optimizados para los usuarios sino para los creadores de aplicaciones. Por ejemplo, en lugar de instalar toda la basura de instalación que viene por defecto, puedo seleccionar tomar solo los archivos que son esenciales. Por ejemplo, al descargar Mysql / Java / etc.

pkgutil --expandme estaba fallando con el siguiente error:

Error encountered while creating .. Error 17: File exists

Pero logré extraer los archivos con xar:

xar -xvf foo.pkg

esto funciona para mi pero aparentemente, si le da a pkgutil un directorio que no existe como destino, el error 17 desaparece.
Sin embargo, ¿dónde lo extrae?
Dirección actual @CodyBugstein

Alternativamente, puedes probar,

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

O

installer -pkg ~/Downloads/packagename.pkg -target ~/Applications/
Eso no funcionó desafortunadamente. Todavía insistió en "Instalar en la ruta base /" y luego solicitó la contraseña de administrador.
Es posible instalar en una imagen de disco creada con algo similar hdiutil create -size 200m -fs HFS+ -volname Scratch scratch.dmgy luego copiar los archivos en las ubicaciones que prefiera. Desafortunadamente, aún necesita el Sudo para ejecutar el instalador.
me sale errorinstaller: Error - This version of OS X 10.11 cannot be installed on this computer.
  1. Una vez que haya logrado abrir el paquete, busque el archivo Archive.pax.gz que se mencionó anteriormente.

  2. Cree una nueva carpeta vacía en su escritorio y asígnele el nombre que desee. Por lo general, los nombro "xxxx" o "zzzz", etc. para facilitar la escritura más adelante.

  3. Opción: arrastre una copia del archivo Archive.pax.gz a esa nueva carpeta "xxxx" en su escritorio.

    Si el archivo está dentro de un medio de solo lectura, simplemente arrástrelo a su carpeta "xxxx" sin la tecla Opción para crear una copia.

  4. Ahora abra Terminal.app y en la línea de comando navegue a su nuevo directorio "xxxx" y enumere el contenido del directorio para confirmar que su archivo Archive.pax.gz está allí:

    cd ~/Desktop/xxxx
    ls -al
    
  5. Ahora hay dos comandos simples para ingresar:

    gunzip -v Archive.pax.gz
    

    Gzip le dirá que ha reemplazado "Archivo.pax.gz" con "Archivo.pax") Ahora enumere el contenido del directorio nuevamente para confirmar esto.

    pax -r -f Archive.pax
    

    (Debes separar -ry -f, ya -rfque no funcionará)

  6. Finalmente, enumere el contenido del directorio nuevamente con ls -al. Además de su archivo Archive.pax, ahora verá una jerarquía de directorios que probablemente contenga uno o más directorios.

    Los archivos en esa jerarquía de directorios le ilustrarán dónde el instalador de OS X instalaría archivos en su sistema como si su directorio "xxxx" fuera el directorio raíz "/".

  7. Luego puede copiar manualmente esos archivos a sus destinos si lo desea.

En otras palabras cd ~/Desktop; cp Package.pkg/Contents/Archive.pax.gz .; gunzip -v Archive.pax.gz; pax -r -f Archive.pax. No es necesario describir todo con ese nivel de detalle.
Lri, di esa cantidad de detalles para que los usuarios de cualquier nivel de experiencia pudieran seguirlo y tener éxito. Por supuesto, su versión críptica lograría los mismos resultados. Sin embargo, otros usuarios que lean esto en el futuro y que no estén familiarizados con la línea de comandos podrían perderse irremediablemente.

La mejor herramienta para inspeccionar archivos de paquetes es Paquete sospechoso . También le permite copiar archivos fuera del paquete.

No solo proporcionará toda la información que necesita en la aplicación, sino que también instalará un complemento de Vista rápida, por lo que simplemente seleccionando el archivo del paquete y presionando la barra espaciadora se abre una ventana con la información más esencial.

El Unarchiver puede hacer esto; hará lo mismo pkgutil --expandpero usando arrastrar y soltar. De todos modos, es un mejor reemplazo para Archive Utility.app de Apple.

UnArchiver hizo el truco.

Instale UnArchiver, abra UnArchiver; mientras está abierto, haga doble clic en ese molestoMAMP_MAMP_3.5.pkg

Siga los pasos para instalar MAMP.